diff options
60 files changed, 720 insertions, 520 deletions
diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc index f1c276f..6975186 100644 --- a/gcc/c-family/c-opts.cc +++ b/gcc/c-family/c-opts.cc @@ -1215,6 +1215,10 @@ c_common_post_options (const char **pfilename) if (cxx_dialect >= cxx20) flag_concepts = 1; + /* Coroutines are also a C++20 feature. */ + SET_OPTION_IF_UNSET (&global_options, &global_options_set, + flag_coroutines, cxx_dialect >= cxx20); + /* Enable lifetime extension of range based for temporaries for C++23. */ SET_OPTION_IF_UNSET (&global_options, &global_options_set, flag_range_for_ext_temps, cxx_dialect >= cxx23); @@ -2009,8 +2013,6 @@ set_std_cxx20 (int iso) flag_isoc94 = 1; flag_isoc99 = 1; flag_isoc11 = 1; - /* C++20 includes coroutines. */ - flag_coroutines = true; cxx_dialect = cxx20; lang_hooks.name = "GNU C++20"; } @@ -2027,8 +2029,6 @@ set_std_cxx23 (int iso) flag_isoc94 = 1; flag_isoc99 = 1; flag_isoc11 = 1; - /* C++23 includes coroutines. */ - flag_coroutines = true; cxx_dialect = cxx23; lang_hooks.name = "GNU C++23"; } @@ -2045,8 +2045,6 @@ set_std_cxx26 (int iso) flag_isoc94 = 1; flag_isoc99 = 1; flag_isoc11 = 1; - /* C++26 includes coroutines. */ - flag_coroutines = true; cxx_dialect = cxx26; lang_hooks.name = "GNU C++26"; } diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index d28aee4..d996965 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -14227,7 +14227,7 @@ synthesize_ior_xor (rtx_code code, rtx operands[3]) { /* Trivial cases that don't need synthesis. */ if (SMALL_OPERAND (INTVAL (operands[2])) - || ((TARGET_ZBS || TARGET_XTHEADBS || TARGET_ZBKB) + || ((TARGET_ZBS || TARGET_ZBKB) && single_bit_mask_operand (operands[2], word_mode))) return false; @@ -14264,7 +14264,7 @@ synthesize_ior_xor (rtx_code code, rtx operands[3]) /* If we're flipping all but a small number of bits we can pre-flip the outliers, then flip all the bits, which would restore those bits that were pre-flipped. */ - if ((TARGET_ZBS || TARGET_XTHEADBS || TARGET_ZBKB) + if ((TARGET_ZBS || TARGET_ZBKB) && budget < 0 && code == XOR && popcount_hwi (~INTVAL (operands[2])) < original_budget) diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index e778262..4f9c378 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -6024,7 +6024,7 @@ trees_out::lang_decl_bools (tree t, bits_out& bits) WB (lang->u.fn.has_dependent_explicit_spec_p); WB (lang->u.fn.immediate_fn_p); WB (lang->u.fn.maybe_deleted); - /* We do not stream lang->u.fn.implicit_constexpr. */ + WB (lang->u.fn.implicit_constexpr); WB (lang->u.fn.escalated_p); WB (lang->u.fn.xobj_func); goto lds_min; @@ -6095,7 +6095,7 @@ trees_in::lang_decl_bools (tree t, bits_in& bits) RB (lang->u.fn.has_dependent_explicit_spec_p); RB (lang->u.fn.immediate_fn_p); RB (lang->u.fn.maybe_deleted); - /* We do not stream lang->u.fn.implicit_constexpr. */ + RB (lang->u.fn.implicit_constexpr); RB (lang->u.fn.escalated_p); RB (lang->u.fn.xobj_func); goto lds_min; @@ -12193,13 +12193,23 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef) /* Similarly if EXISTING has undeduced constexpr, but DECL's is already deduced. */ - if (DECL_MAYBE_DELETED (e_inner) && !DECL_MAYBE_DELETED (d_inner) - && DECL_DECLARED_CONSTEXPR_P (d_inner)) - DECL_DECLARED_CONSTEXPR_P (e_inner) = true; - else if (!DECL_MAYBE_DELETED (e_inner) && DECL_MAYBE_DELETED (d_inner)) - /* Nothing to do. */; + if (DECL_DECLARED_CONSTEXPR_P (e_inner) + == DECL_DECLARED_CONSTEXPR_P (d_inner)) + /* Already matches. */; + else if (DECL_DECLARED_CONSTEXPR_P (d_inner) + && (DECL_MAYBE_DELETED (e_inner) + || decl_implicit_constexpr_p (d_inner))) + /* DECL was deduced, copy to EXISTING. */ + { + DECL_DECLARED_CONSTEXPR_P (e_inner) = true; + if (decl_implicit_constexpr_p (d_inner)) + DECL_LANG_SPECIFIC (e_inner)->u.fn.implicit_constexpr = true; + } else if (DECL_DECLARED_CONSTEXPR_P (e_inner) - != DECL_DECLARED_CONSTEXPR_P (d_inner)) + && (DECL_MAYBE_DELETED (d_inner) + || decl_implicit_constexpr_p (e_inner))) + /* EXISTING was deduced, leave it alone. */; + else { mismatch_msg = G_("conflicting %<constexpr%> for imported " "declaration %#qD"); diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 0d64a1c..1973d25 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -23529,13 +23529,13 @@ conversion_may_instantiate_p (tree to, tree from) /* Converting to a non-aggregate class type will consider its user-declared constructors, which might induce instantiation. */ - if (CLASS_TYPE_P (to) + if (CLASS_TYPE_P (complete_type (to)) && type_has_converting_constructor (to)) return true; /* Similarly, converting from a class type will consider its conversion functions. */ - if (CLASS_TYPE_P (from) + if (CLASS_TYPE_P (complete_type (from)) && TYPE_HAS_CONVERSION (from)) return true; @@ -25785,10 +25785,10 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict, INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (parm)), INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (t)), UNIFY_ALLOW_NONE, explain_p); - else - return unify_success (explain_p); + gcc_checking_assert (t == arg); } - else if (!same_type_ignoring_top_level_qualifiers_p (parm, arg)) + + if (!same_type_ignoring_top_level_qualifiers_p (parm, arg)) return unify_type_mismatch (explain_p, parm, arg); return unify_success (explain_p); diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index bf1aa70..d09aef0 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -18059,16 +18059,16 @@ skip_interfaces: || (a->dummy && !a->pointer && a->intent == INTENT_OUT && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY)) apply_default_init (sym); + else if (a->function && !a->pointer && !a->allocatable && !a->use_assoc + && sym->result) + /* Default initialization for function results. */ + apply_default_init (sym->result); else if (a->function && sym->result && a->access != ACCESS_PRIVATE && (sym->ts.u.derived->attr.alloc_comp || sym->ts.u.derived->attr.pointer_comp)) /* Mark the result symbol to be referenced, when it has allocatable components. */ sym->result->attr.referenced = 1; - else if (a->function && !a->pointer && !a->allocatable && !a->use_assoc - && sym->result) - /* Default initialization for function results. */ - apply_default_init (sym->result); } if (sym->ts.type == BT_CLASS && sym->ns == gfc_current_ns diff --git a/gcc/po/zh_CN.po b/gcc/po/zh_CN.po index a5073c1..3f9023f 100644 --- a/gcc/po/zh_CN.po +++ b/gcc/po/zh_CN.po @@ -4,7 +4,7 @@ # Meng Jie <zuxy.meng@gmail.com>, 2005-2014. # Jeff Bai <jeffbai@aosc.xyz>, 2015. # Mingye Wang (Arthur2e5) <arthur200126@gmail.com>, 2015, 2016. -# Boyuan Yang <073plan@gmail.com>, 2019, 2023, 2024. +# Boyuan Yang <073plan@gmail.com>, 2019, 2023-2025. # Zixing Zhou <zixingzhou@foxmail.com>, 2023. # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024. # @@ -33,11 +33,11 @@ # msgid "" msgstr "" -"Project-Id-Version: gcc 14.2.0\n" +"Project-Id-Version: gcc 15.1.0\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2025-04-23 19:27+0000\n" -"PO-Revision-Date: 2025-01-09 15:04+0800\n" -"Last-Translator: Zhanhaoxiang Zhang <zzhx2006@outlook.com>\n" +"PO-Revision-Date: 2025-05-15 13:53-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -45,7 +45,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" #: cif-code.def:39 msgid "function not considered for inlining" @@ -317,10 +317,8 @@ msgid "-E or -x required when input is from standard input" msgstr "当输入来自标准输入设备时,需要 -E 或 -x" #: config/darwin.h:153 -#, fuzzy -#| msgid " conflicting code gen style switches are used" msgid "conflicting code generation switches" -msgstr "使用了相互冲突的代码生成风格" +msgstr "使用了相互冲突的代码生成开关" #: config/darwin.h:158 msgid "-bundle_loader not allowed with -dynamiclib" @@ -831,10 +829,9 @@ msgid "Issue debug information for compiler-generated auxiliary variables." msgstr "" #: fortran/lang.opt:486 -#, fuzzy, no-c-format -#| msgid "Enable Plan 9 language extensions" +#, no-c-format msgid "Enable all DEC language extensions." -msgstr "启用九号计划语言扩展" +msgstr "启用所有 DEC 语言扩展。" #: fortran/lang.opt:490 #, fuzzy, no-c-format @@ -868,9 +865,9 @@ msgid "Enable legacy math intrinsics for compatibility." msgstr "" #: fortran/lang.opt:515 -#, fuzzy, no-c-format +#, no-c-format msgid "Enable support for DEC STRUCTURE/RECORD." -msgstr "启用对巨型对象的支持" +msgstr "启用对 DEC STRUCTURE/RECORD 的支持。" #: fortran/lang.opt:519 #, no-c-format @@ -1257,10 +1254,9 @@ msgid "Does nothing. Preserved for backward compatibility." msgstr "不起作用。为向前兼容保留的选项。" #: fortran/lang.opt:911 -#, fuzzy, no-c-format -#| msgid "Statically link the GNU Fortran helper library (libgfortran)" +#, no-c-format msgid "Statically link the GNU Fortran helper library (libgfortran)." -msgstr "静态链接 GNU Fortran 助手库(libgfortran)" +msgstr "静态链接 GNU Fortran 助手库(libgfortran)。" #: fortran/lang.opt:915 #, fuzzy, no-c-format @@ -1296,7 +1292,7 @@ msgstr "遵循 ISO Fortran 2023 标准。" #: fortran/lang.opt:939 #, no-c-format msgid "Enable experimental Fortran 202y features." -msgstr "" +msgstr "启用实验性的 Fortuan 202y 特性。" #: fortran/lang.opt:943 #, no-c-format @@ -1670,7 +1666,7 @@ msgstr "当把函数转换为不兼容类型时给出警告" #: c-family/c.opt:410 #, no-c-format msgid "-Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters." -msgstr "" +msgstr "-Wbidi-chars=[none|unpaired|any|ucn] 对 UTF-8 双向控制字符给出警告。" #: c-family/c.opt:433 #, no-c-format @@ -1703,10 +1699,9 @@ msgid "Deprecated in favor of -Wc11-c23-compat." msgstr "已弃用,请改用 -Wc11-c23-compat。" #: c-family/c.opt:457 -#, fuzzy, no-c-format -#| msgid "Warn about features not present in ISO C11, but present in ISO C23." +#, no-c-format msgid "Warn about features not present in ISO C23, but present in ISO C2Y." -msgstr "对 ISO C11 中不存在但 ISO C23 中存在的特性给出警告。" +msgstr "对 ISO C23 中不存在但 ISO C2Y 中存在的特性给出警告。" #: c-family/c.opt:461 #, no-c-format @@ -1869,10 +1864,9 @@ msgid "Warn for implicit type conversions that may change a value." msgstr "当隐式类型转换可能改变值时给出警告" #: c-family/c.opt:590 -#, fuzzy, no-c-format -#| msgid "Warn for converting NULL from/to a non-pointer type" +#, no-c-format msgid "Warn for converting NULL from/to a non-pointer type." -msgstr "将 NULL 转换为非指针类型时给出警告" +msgstr "对 NULL 和非指针类型之间的转换给出警告。" #: c-family/c.opt:598 #, fuzzy, no-c-format @@ -1880,10 +1874,9 @@ msgid "Warn when performing class template argument deduction on a type with no msgstr "%qE不是类型%qT的有效模板实参,因为对象%qD没有外部链接" #: c-family/c.opt:603 -#, fuzzy, no-c-format -#| msgid "Warn when all constructors and destructors are private" +#, no-c-format msgid "Warn when all constructors and destructors are private." -msgstr "当所有构造函数和析构函数都是私有时给出警告" +msgstr "当所有构造函数和析构函数都是私有时给出警告。" #: c-family/c.opt:607 #, no-c-format @@ -1893,7 +1886,7 @@ msgstr "对悬空的 else 给出警告。" #: c-family/c.opt:611 c-family/c.opt:615 #, no-c-format msgid "Warn for uses of pointers to auto variables whose lifetime has ended." -msgstr "" +msgstr "对使用了指向生命周期已结束的 auto 变量的指针给出警告。" #: c-family/c.opt:619 #, no-c-format @@ -1993,16 +1986,14 @@ msgid "Warn about implicit conversions from \"float\" to \"double\"." msgstr "对从“float”到“double”的隐式转换给出警告。" #: c-family/c.opt:702 -#, fuzzy, no-c-format -#| msgid "Warn when a declaration does not specify a type" +#, no-c-format msgid "Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier." -msgstr "当声明未指定类型时给出警告" +msgstr "当声明中含有重复的 const, volatile, restrict 或 _Atomic 说明符时给出警告。" #: c-family/c.opt:706 -#, fuzzy, no-c-format -#| msgid "Warn about an empty body in an if or else statement" +#, no-c-format msgid "Warn about duplicated branches in if-else statements." -msgstr "当 if 或 else 语句体为空时给出警告" +msgstr "对 if-else 语句中重复的分支给出警告。" #: c-family/c.opt:710 #, no-c-format @@ -2263,10 +2254,9 @@ msgid "Warn when a function never produces a constant expression." msgstr "数字常量表达式下溢时警告" #: c-family/c.opt:930 -#, fuzzy, no-c-format -#| msgid "Warn about invalid uses of the \"offsetof\" macro" +#, no-c-format msgid "Warn about invalid uses of the \"offsetof\" macro." -msgstr "对“offsetof”宏无效的使用给出警告" +msgstr "对“offsetof”宏无效的使用给出警告。" #: c-family/c.opt:934 #, fuzzy, no-c-format @@ -2432,7 +2422,7 @@ msgstr "" #: c-family/c.opt:1083 #, no-c-format msgid "Warn on namespace definition." -msgstr "" +msgstr "对命名空间的定义给出警告。" #: c-family/c.opt:1087 #, fuzzy, no-c-format @@ -2556,10 +2546,9 @@ msgid "Warn when fields in a struct with the packed attribute are misaligned." msgstr "" #: c-family/c.opt:1211 -#, fuzzy, no-c-format -#| msgid "Warn about possibly missing parentheses" +#, no-c-format msgid "Warn about possibly missing parentheses." -msgstr "可能缺少括号的情况下给出警告" +msgstr "在可能缺少括号的情况下给出警告。" #: c-family/c.opt:1219 #, no-c-format @@ -2978,9 +2967,9 @@ msgid "Warn about useless casts." msgstr "对无用的类型转换给出警告。" #: c-family/c.opt:1599 -#, fuzzy, no-c-format +#, no-c-format msgid "Warn about using variadic macros." -msgstr "当定义在主文件中的宏未被使用时给出警告" +msgstr "在使用了变长参数宏时给出警告。" #: c-family/c.opt:1603 #, no-c-format @@ -3131,10 +3120,9 @@ msgid "Enable support for C++ concepts." msgstr "启用对 C++ concepts 的支持。" #: c-family/c.opt:1819 -#, fuzzy, no-c-format -#| msgid "Removed in GCC 10. This switch has no effect." +#, no-c-format msgid "Removed in GCC 15. This switch has no effect." -msgstr "已在 GCC 10 中移除。此开关不起作用。" +msgstr "已在 GCC 15 中移除。此开关不起作用。" #: c-family/c.opt:1823 #, no-c-format @@ -3383,10 +3371,9 @@ msgid "Allow implicit conversions between vectors with differing numbers of subp msgstr "允许具有不同元素数量和/或元素类型的向量间的转换。" #: c-family/c.opt:2059 -#, fuzzy, no-c-format -#| msgid "Enable C++ modules-ts (experimental)." +#, no-c-format msgid "Enable C++20 Modules (experimental)." -msgstr "启用 C++ modules-ts(实验性)。" +msgstr "启用 C++20 模块 实验性)。" #: c-family/c.opt:2067 #, no-c-format @@ -3900,10 +3887,9 @@ msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support msgstr "遵循 ISO 2020 C++ 标准(试验性质的不完全支持)。" #: c-family/c.opt:2589 c-family/c.opt:2593 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support)." -msgstr "遵循 ISO 2020 C++ 标准(试验性质的不完全支持)。" +msgstr "遵循 ISO 2023 C++ 标准(于2024年发布;试验性质的不完全支持)。" #: c-family/c.opt:2597 c-family/c.opt:2601 #, no-c-format @@ -3927,10 +3913,9 @@ msgid "Conform to the ISO 2017 C standard (published in 2018)." msgstr "遵循 ISO 2017 C 标准(于2018年发布)。" #: c-family/c.opt:2621 c-family/c.opt:2779 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2017 C standard (published in 2018)." +#, no-c-format msgid "Conform to the ISO 2023 C standard (published in 2024)." -msgstr "遵循 ISO 2017 C 标准(于2018年发布)。" +msgstr "遵循 ISO 2023 C 标准(于2014年发布)。" #: c-family/c.opt:2625 #, no-c-format @@ -3938,10 +3923,9 @@ msgid "Deprecated in favor of -std=c23." msgstr "已弃用,请改用 -std=c23。" #: c-family/c.opt:2629 -#, fuzzy, no-c-format -#| msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)." +#, no-c-format msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)." -msgstr "遵循 ISO 2020 C++ 标准(试验性质的不完全支持)。" +msgstr "遵循 ISO 202Y C 标准草案(试验性质的不完全支持)。" #: c-family/c.opt:2633 c-family/c.opt:2637 c-family/c.opt:2751 #, no-c-format @@ -4136,10 +4120,9 @@ msgid "Enable Cobol parser debugging" msgstr "启用后端调试." #: cobol/lang.opt:102 -#, fuzzy, no-c-format -#| msgid "Enable backend debugging." +#, no-c-format msgid "Enable Cobol yacc debugging" -msgstr "启用后端调试." +msgstr "启用 Cobol yacc 调试" #: cobol/lang.opt:106 #, no-c-format @@ -4182,9 +4165,9 @@ msgid "Select the runtime." msgstr "选择运行时。" #: ada/gcc-interface/lang.opt:93 -#, fuzzy, no-c-format +#, no-c-format msgid "Catch typos." -msgstr "进入了 catch 块" +msgstr "捕获打字错误。" #: ada/gcc-interface/lang.opt:97 #, fuzzy, no-c-format @@ -4236,10 +4219,9 @@ msgid "Generate JSON file." msgstr "生成 JSON 文件。" #: d/lang.opt:167 -#, fuzzy, no-c-format -#| msgid "-MF <file>\tWrite dependency output to the given file" +#, no-c-format msgid "-Xf <file>\tWrite JSON output to the given <file>." -msgstr "-MF <文件>\t将依赖项输出到给定文件" +msgstr "-Xf <文件>\t将 JSON 输出到给定<文件>。" #: d/lang.opt:171 #, no-c-format @@ -4440,10 +4422,9 @@ msgid "Implement 'in' contracts of overridden methods to be a superset of parent msgstr "" #: d/lang.opt:408 -#, fuzzy, no-c-format -#| msgid "Consider access to byte sized memory slow." +#, no-c-format msgid "Disable access to shared memory objects." -msgstr "认为按字节访问内存速度较慢。" +msgstr "禁用对共享内存对象的访问。" #: d/lang.opt:412 #, no-c-format @@ -9265,7 +9246,7 @@ msgstr "指定目标架构的名称" #: config/nvptx/nvptx.opt:64 #, no-c-format msgid "Alias:" -msgstr "" +msgstr "别名:" #: config/nvptx/nvptx.opt:125 #, fuzzy, no-c-format @@ -9274,9 +9255,9 @@ msgid "Known PTX ISA versions (for use with the -mptx= option):" msgstr "已知 MIPS ISA 等级 (用于 -mips 选项):" #: config/nvptx/nvptx.opt:156 -#, fuzzy, no-c-format +#, no-c-format msgid "Specify the PTX ISA version to use." -msgstr "ELF 文件 ABI 版本无效" +msgstr "指定要使用的 PTX ISA 版本。" #: config/nvptx/nvptx.opt:160 #, no-c-format @@ -12154,10 +12135,9 @@ msgid "Always align function entry, jump target and return address." msgstr "" #: config/nds32/nds32.opt:85 -#, fuzzy, no-c-format -#| msgid "Align code and data to 32 bits" +#, no-c-format msgid "Align function entry to 4 byte." -msgstr "将代码和数据对齐到 32 位边界上" +msgstr "将函数入口对齐到 4 字节。" #: config/nds32/nds32.opt:97 #, no-c-format @@ -12206,9 +12186,9 @@ msgid "Generate string extension instructions." msgstr "生成加载/存储乘法指令" #: config/nds32/nds32.opt:139 -#, fuzzy, no-c-format +#, no-c-format msgid "Generate DSP extension instructions." -msgstr "生成加载/存储乘法指令" +msgstr "生成 DSP 扩展指令。" #: config/nds32/nds32.opt:143 #, fuzzy, no-c-format @@ -12355,10 +12335,9 @@ msgid "Known IQ2000 CPUs (for use with the -mcpu= option):" msgstr "已知 IQ2000 处理器 (用于 -mcpu= 选项):" #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142 -#, fuzzy, no-c-format -#| msgid "Use ROM instead of RAM" +#, no-c-format msgid "Use ROM instead of RAM." -msgstr "使用 ROM 而不是 RAM" +msgstr "使用 ROM 而不是 RAM。" #: config/iq2000/iq2000.opt:70 #, fuzzy, no-c-format @@ -12373,15 +12352,14 @@ msgid "Put uninitialized constants in ROM (needs -membedded-data)." msgstr "将未初始化的常量放在 ROM 中(需要 -membedded-data)" #: config/csky/csky.opt:34 -#, fuzzy, no-c-format +#, no-c-format msgid "Specify the target architecture." -msgstr "指定目标架构的名称" +msgstr "指定目标架构的名称。" #: config/csky/csky.opt:38 -#, fuzzy, no-c-format -#| msgid "Specify the target CPU" +#, no-c-format msgid "Specify the target processor." -msgstr "选择目标 CPU" +msgstr "指定目标处理器。" #: config/csky/csky.opt:90 #, fuzzy, no-c-format @@ -12426,10 +12404,9 @@ msgid "Enable coprocessor instructions." msgstr "启用 clip 指令" #: config/csky/csky.opt:122 -#, fuzzy, no-c-format -#| msgid "Enable average instructions" +#, no-c-format msgid "Enable cache prefetch instructions." -msgstr "启用均值指令" +msgstr "启用缓存预取指令。" #: config/csky/csky.opt:126 #, fuzzy, no-c-format @@ -12546,12 +12523,12 @@ msgstr "已知 C6X ISA (用于 -march= 选项):" #: config/c6x/c6x.opt:30 config/mips/mips.opt:134 #, no-c-format msgid "Use big-endian byte order." -msgstr "令大端在前。" +msgstr "使用大端字节序。" #: config/c6x/c6x.opt:34 config/mips/mips.opt:138 #, no-c-format msgid "Use little-endian byte order." -msgstr "令小端在前。" +msgstr "使用小端字节序。" #: config/c6x/c6x.opt:42 #, fuzzy, no-c-format @@ -12958,10 +12935,9 @@ msgid "Annotate assembler instructions with estimated addresses." msgstr "使用估算的地址评注汇编指令" #: config/sh/sh.opt:247 -#, fuzzy, no-c-format -#| msgid "Generate code in little endian mode" +#, no-c-format msgid "Generate code in little endian mode." -msgstr "生成小端在前的代码" +msgstr "在小端序模式下生成代码。" #: config/sh/sh.opt:251 #, fuzzy, no-c-format @@ -13014,27 +12990,24 @@ msgid "Pretend a branch-around-a-move is a conditional move." msgstr "将数据传输周围的跳转认为是条件转移。" #: config/sh/sh.opt:295 -#, fuzzy, no-c-format -#| msgid "Enable the use of the fsca instruction" +#, no-c-format msgid "Enable the use of the fsca instruction." -msgstr "启用对 fsca 指令的使用" +msgstr "启用对 fsca 指令的使用。" #: config/sh/sh.opt:299 -#, fuzzy, no-c-format -#| msgid "Enable the use of the fsrra instruction" +#, no-c-format msgid "Enable the use of the fsrra instruction." -msgstr "启用 fsrra 指令的使用" +msgstr "启用 fsrra 指令的使用。" #: config/gcn/gcn-tables.opt:25 #, no-c-format msgid "GCN GPU type to use:" -msgstr "" +msgstr "要使用的 GCN GPU 类型:" #: config/gcn/gcn.opt:26 config/gcn/gcn.opt:30 -#, fuzzy, no-c-format -#| msgid "Specify the name of the target CPU" +#, no-c-format msgid "Specify the name of the target GPU." -msgstr "指定目标 CPU 的名称" +msgstr "指定目标 CPU 的名称。" #: config/gcn/gcn.opt:34 #, no-c-format @@ -13093,10 +13066,9 @@ msgid "Assume small address space." msgstr "假定小地址空间" #: config/bpf/bpf.opt:28 -#, fuzzy, no-c-format -#| msgid "Generate LP64 code" +#, no-c-format msgid "Generate xBPF." -msgstr "生成 LP64 代码" +msgstr "生成 xBPF。" #: config/bpf/bpf.opt:34 #, fuzzy, no-c-format @@ -13127,10 +13099,9 @@ msgid "Enable extra conditional-branch instructions j(s)lt and j(s)le." msgstr "启用条件移动指令。" #: config/bpf/bpf.opt:56 -#, fuzzy, no-c-format -#| msgid "Enable 32-bit divide instructions" +#, no-c-format msgid "Enable 32-bit ALU instructions." -msgstr "启用 32 位除法指令" +msgstr "启用 32 位 ALU 指令。" #: config/bpf/bpf.opt:60 #, fuzzy, no-c-format @@ -13351,10 +13322,9 @@ msgid "FP exceptions are enabled." msgstr "FP 异常已启用" #: config/mips/mips.opt:223 -#, fuzzy, no-c-format -#| msgid "Use 32-bit floating-point registers" +#, no-c-format msgid "Use 32-bit floating-point registers." -msgstr "使用 32 位浮点寄存器" +msgstr "使用 32 位浮点寄存器。" #: config/mips/mips.opt:227 #, no-c-format @@ -13456,22 +13426,19 @@ msgid "Use -G for object-local data." msgstr "为对象局部数据使用 -G" #: config/mips/mips.opt:305 -#, fuzzy, no-c-format -#| msgid "Use indirect calls" +#, no-c-format msgid "Use indirect calls." -msgstr "使用间接调用" +msgstr "使用间接调用。" #: config/mips/mips.opt:309 -#, fuzzy, no-c-format -#| msgid "Use a 32-bit long type" +#, no-c-format msgid "Use a 32-bit long type." -msgstr "使用 32 位 long 类型" +msgstr "使用 32 位 long 类型。" #: config/mips/mips.opt:313 -#, fuzzy, no-c-format -#| msgid "Use a 64-bit long type" +#, no-c-format msgid "Use a 64-bit long type." -msgstr "使用 64 位 long 类型" +msgstr "使用 64 位 long 类型。" #: config/mips/mips.opt:317 #, fuzzy, no-c-format @@ -13486,9 +13453,9 @@ msgid "Don't optimize block moves." msgstr "不优化块移动" #: config/mips/mips.opt:325 -#, fuzzy, no-c-format +#, no-c-format msgid "Use microMIPS instructions." -msgstr "使用浮点双精度指令" +msgstr "使用 microMIPS 指令。" #: config/mips/mips.opt:329 #, fuzzy, no-c-format @@ -13497,10 +13464,9 @@ msgid "Use MIPS MSA Extension instructions." msgstr "使用 MIPS-DSP 指令" #: config/mips/mips.opt:333 -#, fuzzy, no-c-format -#| msgid "Allow the use of MT instructions" +#, no-c-format msgid "Allow the use of MT instructions." -msgstr "允许使用 MT 指令" +msgstr "允许使用 MT 指令。" #: config/mips/mips.opt:337 #, fuzzy, no-c-format @@ -13509,10 +13475,9 @@ msgid "Prevent the use of all floating-point operations." msgstr "不允许使用任何浮点操作" #: config/mips/mips.opt:341 -#, fuzzy, no-c-format -#| msgid "Use MCU instructions" +#, no-c-format msgid "Use MCU instructions." -msgstr "使用 MCU 指令" +msgstr "使用 MCU 指令。" #: config/mips/mips.opt:345 #, fuzzy, no-c-format @@ -30236,14 +30201,14 @@ msgid "if this code is reached, the program will abort" msgstr "如果执行到这段代码,程序将中止" #: godump.cc:1434 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "could not close Go dump file: %m" -msgstr "无法打开用零填充的指令转储文件%qs:%s" +msgstr "无法关闭 Go 转储文件:%m" #: godump.cc:1446 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "could not open Go dump file %qs: %m" -msgstr "无法打开最终指令转储文件%qs:%s" +msgstr "无法打开 Go 转储文件 %qs:%m" #: graphite.cc:529 #, fuzzy, gcc-internal-format @@ -30399,9 +30364,9 @@ msgid "array types have different bounds" msgstr "?: 的操作数类型不一致,分别为%qT和%qT" #: ipa-devirt.cc:1139 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "return value type mismatch" -msgstr "<返回值>" +msgstr "返回值类型不匹配" #: ipa-devirt.cc:1154 #, gcc-internal-format @@ -30610,10 +30575,9 @@ msgid "name %qs is defined to different value in another translation unit" msgstr "%qE未声明(不在函数内)" #: ipa-devirt.cc:4325 -#, fuzzy, gcc-internal-format -#| msgid "missing definition" +#, gcc-internal-format msgid "mismatching definition" -msgstr "定义缺失" +msgstr "不匹配的定义" #: ipa-fnsummary.cc:4845 #, fuzzy, gcc-internal-format @@ -30867,13 +30831,12 @@ msgstr "需要 %<,%> 或 %<)%>" #: lazy-diagnostic-path.cc:179 #, gcc-internal-format msgid "this warning should be skipped" -msgstr "" +msgstr "该警告信息应当被跳过" #: lazy-diagnostic-path.cc:194 -#, fuzzy, gcc-internal-format -#| msgid "this is the insn:" +#, gcc-internal-format msgid "this is a test" -msgstr "这是指令:" +msgstr "这是一个测试" #: lra-assigns.cc:1694 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -31002,7 +30965,7 @@ msgstr "" #: lto-compress.cc:165 #, gcc-internal-format msgid "original size unknown" -msgstr "" +msgstr "原始大小未知" #: lto-compress.cc:171 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -31145,19 +31108,19 @@ msgid "problem with building target image for %s" msgstr "组建目标平台:%s\n" #: lto-wrapper.cc:1083 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "reading input file" -msgstr "读取输入历史文件…\n" +msgstr "正在读取输入文件" #: lto-wrapper.cc:1088 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "writing output file" -msgstr "写入到输出文件 '%s' 时出错\n" +msgstr "正在写入输出文件" #: lto-wrapper.cc:1127 #, gcc-internal-format msgid "installation error, cannot find %<crtoffloadtable%s.o%>" -msgstr "" +msgstr "安装错误,无法找到 %<crtoffloadtable%s.o%>" #: lto-wrapper.cc:1380 #, fuzzy @@ -31178,10 +31141,9 @@ msgid "environment variable %<COLLECT_GCC_OPTIONS%> must be set" msgstr "环境变量 COLLECT_GCC_OPTIONS 必须被设置" #: lto-wrapper.cc:1575 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "missing argument to %qs" +#, gcc-internal-format, gfc-internal-format msgid "missing directory: %s" -msgstr "%qs缺少参数" +msgstr "缺失目录:%s" #: lto-wrapper.cc:1768 lto-wrapper.cc:1828 c-family/c-pch.cc:215 #: c-family/c-pch.cc:250 c-family/c-pch.cc:288 c-family/c-pch.cc:366 @@ -31217,10 +31179,9 @@ msgid "using ltrans cache without file locking support, do not use in parallel" msgstr "" #: lto-wrapper.cc:2315 config/gcn/mkoffload.cc:954 -#, fuzzy, gcc-internal-format -#| msgid "atexit failed" +#, gcc-internal-format msgid "%<atexit%> failed" -msgstr "atexit 失败" +msgstr "%<atexit%> 失败" #: multiple_target.cc:72 #, fuzzy, gcc-internal-format @@ -31744,9 +31705,9 @@ msgid "location of OpenACC %<kernels%>" msgstr "" #: omp-oacc-kernels-decompose.cc:1295 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs not yet supported" -msgstr "%P%F:不支持 -shared\n" +msgstr "%qs 尚未被支持" #: omp-oacc-neuter-broadcast.cc:1764 #, gcc-internal-format @@ -32525,14 +32486,9 @@ msgid "fail to initialize plugin %s" msgstr "无法初始化插件 %s" #: plugin.cc:708 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "" -#| "cannot load plugin %s\n" -#| "%s" +#, gcc-internal-format, gfc-internal-format msgid "cannot load plugin %s: %s" -msgstr "" -"无法加载插件 %s\n" -"%s" +msgstr "无法加载插件 %s:%s" #: plugin.cc:718 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -32555,10 +32511,9 @@ msgstr "" "%3$s" #: plugin.cc:737 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "fail to initialize plugin %s" +#, gcc-internal-format, gfc-internal-format msgid "failed to initialize plugin %s" -msgstr "无法初始化插件 %s" +msgstr "初始化插件 %s 失败" #: plugin.cc:1049 #, fuzzy, gcc-internal-format @@ -32831,9 +32786,9 @@ msgid "register of %qD used for multiple global register variables" msgstr "嵌套函数中使用了全局寄存器变量%qD" #: reginfo.cc:760 config/rs6000/rs6000-logue.cc:5577 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicts with %qD" -msgstr "%qD与已用的函数冲突" +msgstr "与 %qD 冲突" #: reginfo.cc:765 #, gcc-internal-format @@ -33125,9 +33080,9 @@ msgid "variable symbol is not variable" msgstr "%L处的符号不是一个 DUMMY 变量" #: symtab.cc:1130 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "node has unknown type" -msgstr "未知类型的输入行" +msgstr "节点类型未知" #: symtab.cc:1135 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -45675,10 +45630,9 @@ msgid "mips16 function profiling" msgstr "mips16 函数取样" #: config/mmix/mmix.cc:318 -#, fuzzy, gcc-internal-format -#| msgid "-f%s not supported: ignored" +#, gcc-internal-format msgid "%<-f%s%> not supported: ignored" -msgstr "-f%s 不受支持:已忽略" +msgstr "%<-f%s%> 不受支持:已忽略" #: config/mmix/mmix.cc:783 #, gcc-internal-format @@ -45818,7 +45772,7 @@ msgstr "" #: config/msp430/msp430-devices.cc:488 #, gcc-internal-format msgid "could not locate MCU data file %<devices.csv%>" -msgstr "" +msgstr "无法定位 MCU 数据文件 %<devices.csv%>" #: config/msp430/msp430.cc:181 #, gcc-internal-format @@ -45861,10 +45815,9 @@ msgid "unrecognized MCU name %qs, assuming that it just supports the MSP430X ISA msgstr "" #: config/msp430/msp430.cc:250 -#, fuzzy, gcc-internal-format -#| msgid "unrecognized register name %qs" +#, gcc-internal-format msgid "Unrecognized MCU name %qs." -msgstr "不可识别的寄存名%qs" +msgstr "无法识别的 MCU 名称 %qs。" #: config/msp430/msp430.cc:255 #, fuzzy, gcc-internal-format @@ -46152,9 +46105,9 @@ msgid "%<-mabi=2fp+%> option only support when FPU available, must be enable %<- msgstr "" #: config/nvptx/mkoffload.cc:94 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deleting file %s: %m" -msgstr "删除临时 exp 文件 %s" +msgstr "正在删除文件 %s: %m" #: config/nvptx/mkoffload.cc:119 #, gcc-internal-format @@ -46203,9 +46156,9 @@ msgid "cannot open '%s'" msgstr "无法打开“%s”" #: config/nvptx/mkoffload.cc:860 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot open intermediate ptx file" -msgstr "无法打开输入文件“%s”" +msgstr "无法打开中间的 ptx 文件" #: config/nvptx/nvptx.cc:206 #, fuzzy, gcc-internal-format @@ -46355,15 +46308,14 @@ msgid "%<CTABLE_ENTRY%> index %wd is not valid" msgstr "" #: config/pru/pru-pragma.cc:63 -#, fuzzy, gcc-internal-format -#| msgid "redefinition of %q#T" +#, gcc-internal-format msgid "redefinition of %<CTABLE_ENTRY %wd%>" -msgstr "%q#T重定义" +msgstr "%<CTABLE_ENTRY %wd%> 的重定义" #: config/pru/pru-pragma.cc:67 #, gcc-internal-format msgid "%<CTABLE_ENTRY%> base address is not a multiple of 256" -msgstr "" +msgstr "%<CTABLE_ENTRY%> 基地址不是 256 的倍数" #: config/pru/pru-pragma.cc:75 #, fuzzy, gcc-internal-format @@ -46754,10 +46706,9 @@ msgid "rv32e requires ilp32e ABI" msgstr "rv32e 需要 ilp32e ABI" #: config/riscv/riscv.cc:10723 -#, fuzzy, gcc-internal-format -#| msgid "rv32e requires ilp32e ABI" +#, gcc-internal-format msgid "rv64e requires lp64e ABI" -msgstr "rv32e 需要 ilp32e ABI" +msgstr "rv64e 需要 lp64e ABI" #: config/riscv/riscv.cc:10728 #, fuzzy, gcc-internal-format @@ -47252,10 +47203,9 @@ msgstr "%qs必须与%qs一起使用" #: config/rs6000/rs6000.cc:4222 config/rs6000/rs6000.cc:4231 #: config/rs6000/rs6000.cc:4369 config/rs6000/rs6000.cc:4382 #: config/rs6000/rs6000.cc:4404 -#, fuzzy, gcc-internal-format -#| msgid "%qT referred to as %qs" +#, gcc-internal-format msgid "%qs requires %qs" -msgstr "%qT作为%qs被引用" +msgstr "%qs 需要 %qs" #: config/rs6000/rs6000.cc:4118 #, fuzzy, gcc-internal-format @@ -47517,10 +47467,9 @@ msgid "%qF requires z15 or higher" msgstr "%qF 需要 z15 或更高" #: config/s390/s390-c.cc:965 -#, fuzzy, gcc-internal-format -#| msgid "%qF requires z14 or higher" +#, gcc-internal-format msgid "%qF requires z17 or higher" -msgstr "%qF 需要 z14 或更高" +msgstr "%qF 需要 z17 或更高" #: config/s390/s390-c.cc:979 #, gcc-internal-format @@ -80823,9 +80772,9 @@ msgid "Extension: Unary operator following arithmetic operator (use parentheses) msgstr "扩展:%C处单目运算符出现在算术运算符之后" #: fortran/matchexp.cc:666 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "match_level_4(): Bad operator" -msgstr "错误的运算符" +msgstr "match_level_4():错误的运算符" #: fortran/misc.cc:116 #, gcc-internal-format diff --git a/gcc/range-op-ptr.cc b/gcc/range-op-ptr.cc index 36e9dfc..6aadc9c 100644 --- a/gcc/range-op-ptr.cc +++ b/gcc/range-op-ptr.cc @@ -602,8 +602,14 @@ operator_cast::fold_range (prange &r, tree type, int_range<2> tmp = inner; tree pointer_uint_type = make_unsigned_type (TYPE_PRECISION (type)); range_cast (tmp, pointer_uint_type); - r.set (type, tmp.lower_bound (), tmp.upper_bound ()); - r.update_bitmask (tmp.get_bitmask ()); + // Casts may cause ranges to become UNDEFINED based on bitmasks. + if (tmp.undefined_p ()) + r.set_varying (type); + else + { + r.set (type, tmp.lower_bound (), tmp.upper_bound ()); + r.update_bitmask (tmp.get_bitmask ()); + } return true; } diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 06d357f..e2b9c82 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -3716,14 +3716,34 @@ operator_bitwise_and::op1_range (irange &r, tree type, return true; } + if (!op2.singleton_p (mask)) + return true; + // For 0 = op1 & MASK, op1 is ~MASK. - if (lhs.zero_p () && op2.singleton_p ()) + if (lhs.zero_p ()) { wide_int nz = wi::bit_not (op2.get_nonzero_bits ()); int_range<2> tmp (type); tmp.set_nonzero_bits (nz); r.intersect (tmp); } + + irange_bitmask lhs_bm = lhs.get_bitmask (); + // given [5,7] mask 0x3 value 0x4 = N & [7, 7] mask 0x0 value 0x7 + // Nothing is known about the bits not specified in the mask value (op2), + // Start with the mask, 1's will occur where values were masked. + wide_int op1_mask = ~mask; + // Any bits that are unknown on the LHS are also unknown in op1, + // so union the current mask with the LHS mask. + op1_mask |= lhs_bm.mask (); + // The resulting zeros correspond to known bits in the LHS mask, and + // the LHS value should tell us what they are. Mask off any + // extraneous values thats are not convered by the mask. + wide_int op1_value = lhs_bm.value () & ~op1_mask; + irange_bitmask op1_bm (op1_value, op1_mask); + // INtersect this mask with anything already known about the value. + op1_bm.intersect (r.get_bitmask ()); + r.update_bitmask (op1_bm); return true; } diff --git a/gcc/testsuite/cobol.dg/group1/check_88.cob b/gcc/testsuite/cobol.dg/group1/check_88.cob index 4a7723e..f1d0685 100644 --- a/gcc/testsuite/cobol.dg/group1/check_88.cob +++ b/gcc/testsuite/cobol.dg/group1/check_88.cob @@ -3,25 +3,25 @@ *> { dg-output {\-> <\-(\n|\r\n|\r)} } *> { dg-output {\->"""<\-(\n|\r\n|\r)} } *> { dg-output {\->000<\-(\n|\r\n|\r)} } -*> { dg-output {\->ÿÿÿ<\-(\n|\r\n|\r)} } +*> { dg-output {\->.*<\-(\n|\r\n|\r)} } *> { dg-output { (\n|\r\n|\r)} } *> { dg-output {\-><\-(\n|\r\n|\r)} } *> { dg-output {\-> <\-(\n|\r\n|\r)} } *> { dg-output {\->""""<\-(\n|\r\n|\r)} } *> { dg-output {\->0000<\-(\n|\r\n|\r)} } -*> { dg-output {\->ÿÿÿÿ<\-(\n|\r\n|\r)} } +*> { dg-output {\->.*<\-(\n|\r\n|\r)} } *> { dg-output { (\n|\r\n|\r)} } *> { dg-output {There should be no garbage after character 32(\n|\r\n|\r)} } *> { dg-output {\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-(\n|\r\n|\r)} } -*> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße (\n|\r\n|\r)} } -*> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße (\n|\r\n|\r)} } +*> { dg-output {.* Bundesstra.e (\n|\r\n|\r)} } +*> { dg-output {.* Bundesstra.e (\n|\r\n|\r)} } *> { dg-output { (\n|\r\n|\r)} } *> { dg-output {There should be no spaces before the final quote(\n|\r\n|\r)} } -*> { dg-output {"üüüüüüüüüüüüüüüüüüü Bundesstraße"(\n|\r\n|\r)} } +*> { dg-output {".* Bundesstra.e"(\n|\r\n|\r)} } *> { dg-output { (\n|\r\n|\r)} } *> { dg-output { IsLow ""(\n|\r\n|\r)} } *> { dg-output { IsZero "000"(\n|\r\n|\r)} } -*> { dg-output { IsHi "ÿÿÿ"(\n|\r\n|\r)} } +*> { dg-output { IsHi ".*"(\n|\r\n|\r)} } *> { dg-output { IsBob "bob"(\n|\r\n|\r)} } *> { dg-output { IsQuote """""(\n|\r\n|\r)} } *> { dg-output { IsSpace " "(\n|\r\n|\r)} } diff --git a/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob b/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob index 6fab992..a5ef3a8 100644 --- a/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob +++ b/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob @@ -81,12 +81,13 @@ 02 based-x pic x(24) value "I am I, Don Quixote". 02 based-9 pic 999 value 123. 02 based-p pointer value NULL. + 01 pval redefines based-var pointer. 01 allocated-pointer pointer. procedure division. display "allocate characters (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)" allocate 35 characters returning allocated-pointer set address of based-var to allocated-pointer - call "reporter" using based-var + display pval free allocated-pointer goback. end program prog-high. diff --git a/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out b/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out index c141fdf..ea05e96 100644 --- a/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out +++ b/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out @@ -12,6 +12,5 @@ allocate characters (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultb " " " " 0x2020202020202020 initialize high-value allocate characters (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero) - (1) as allocated - "ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ" "¿¿¿" 0xffffffffffffffff +0xffffffffffffffff diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob index 2983cce..91440f5 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob @@ -1,27 +1,27 @@ *> { dg-do run } *> { dg-output-file "group2/INSPECT_CONVERTING_TO_figurative_constants.out" } - identification division. program-id. clouseau. data division. working-storage section. 01 item pic x(12). + 01 pitem redefines item pointer. procedure division. move all "abcd" to item inspect item converting "abcd" to low-values - display "low-values " space """" item """" + display "low-values " space """" pitem """" move all "abcd" to item inspect item converting "abcd" to spaces - display "spaces " space """" item """" + display "spaces " space """" pitem """" move all "abcd" to item inspect item converting "abcd" to zeros - display "zeros " space """" item """" + display "zeros " space """" pitem """" move all "abcd" to item inspect item converting "abcd" to quotes - display "quotes " space """" item """" + display "quotes " space """" pitem """" move all "abcd" to item inspect item converting "abcd" to high-values - display "high-values" space """" item """" + display "high-values" space """" pitem """" goback. end program clouseau. diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out b/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out index 7de6e48..23ce49b 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out @@ -1,6 +1,6 @@ -low-values "" -spaces " " -zeros "000000000000" -quotes """""""""""""" -high-values "ÿÿÿÿÿÿÿÿÿÿÿÿ" +low-values "0x0000000000000000" +spaces "0x2020202020202020" +zeros "0x3030303030303030" +quotes "0x2222222222222222" +high-values "0xffffffffffffffff" diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob index 1bbdea4..2f306f1 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob @@ -25,7 +25,7 @@ Move ' EFABDBCGABEFGG 0301010005TUXYXVWRXYZZPZ' to row(1). Move ' BABABC 0200000101SXYXYZ' to row(3). Move ' BBBC 0001000200SSVW' to row(5). -` + compute rowlim = 2*rows - 1 Display ' INPUT C0 C1 C2 C3 C4 OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob index a464101..0e4297d 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob @@ -25,7 +25,7 @@ *> the observed outputs Move ' BBB 0300ZZZ' to row(1). Move ' ABA 0300ZZZ' to row(3). -` + compute rowlim = 2*rows - 1 Display ' INPUT C0 C1 OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob index 7111e9c..0b6c00c 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob @@ -19,7 +19,7 @@ Move ' ADDDDA 000005AZZZZZ' to row(5). Move ' CDDDDC 000000CDDDDC' to row(7). Move ' BDBBBDB 000300BDWWWDB' to row(9). -` + Display ' INPUT C0 C1 C2 OUTPUT' Display ' -------------------- -- -- -- --------------------' Perform Example-3 with test after diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob index 192e1a8..03a0b07 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob @@ -24,7 +24,7 @@ *> Even-numbered rows are modified by the INSPECT statements and contain *> the observed outputs Move ' ABABABABC 01ABABXYABC' to row(1). -` + compute rowlim = 2*rows - 1 Display ' INPUT C0 C1 OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob index 0923720..5ef97e1 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob @@ -30,7 +30,7 @@ Move ' ABABBCAB 000106ABABBCXY' to row(1). Move ' ABDBABC 000001AVDBABC' to row(3). Move ' BCABCABD 010000BCABCAVD' to row(5). -` + compute rowlim = 2*rows - 1 Display ' INPUT C0 C1 C2 OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob index 75917a2..40cecfc 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob @@ -22,7 +22,7 @@ *> Even-numbered rows are modified by the INSPECT statements and contain *> the observed outputs Move ' AC"AEBDFBCD#AB"D AC"XEYXFYZX#AB"D' to row(1). -` + compute rowlim = 2*rows - 1 Display ' INPUT OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob index ca2ae71..abf9eb9 100644 --- a/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob +++ b/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob @@ -27,7 +27,7 @@ Move ' 415-245-1212 415-245-1212' to row(1). Move ' 415-CH5-1212 415-??5-1212' to row(3). Move ' 20%Numeric 20%???????' to row(5). -` + compute rowlim = 2*rows - 1 Display ' INPUT OUTPUT' diff --git a/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob b/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob new file mode 100644 index 0000000..4bcc06c --- /dev/null +++ b/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob @@ -0,0 +1,24 @@ + *> { dg-do run } + *> { dg-output-file "group2/Multiple_INDEXED_BY_variables_with_the_same_name.out" } + IDENTIFICATION DIVISION. + PROGRAM-ID. prog. + DATA DIVISION. + WORKING-STORAGE SECTION. + 01 GROUP-1-TABLE. + 05 TABLE-LEVEL-1 VALUE "ABCDEFGHIJKLMNO". + 06 TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND. + 88 EQUALS-M VALUE "M". + 01 GROUP-2-TABLE. + 05 TABLE-LEVEL-1 VALUE "abcdefghijklmno". + 06 TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND. + 88 EQUALS-M VALUE "M". + PROCEDURE DIVISION. + set IND OF GROUP-1-TABLE to 2 + set IND OF GROUP-2-TABLE to 4 + display "The output should be ""Db""" + display "The output is " """" + TABLE-ITEM of GROUP-1-TABLE(IND OF GROUP-2-TABLE) + TABLE-ITEM of GROUP-2-TABLE(IND OF GROUP-1-TABLE) + """" + goback. + diff --git a/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out b/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out new file mode 100644 index 0000000..c4d70c9 --- /dev/null +++ b/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out @@ -0,0 +1,3 @@ +The output should be "Db" +The output is "Db" + diff --git a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C index dde0bab..deb3be1 100644 --- a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C +++ b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17 -w" } +// { dg-additional-options "-std=c++17 -fcoroutines -w" } #include "coro.h" diff --git a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C index 8304344..dfa24a8 100644 --- a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C +++ b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17 -w" } +// { dg-additional-options "-std=c++17 -fcoroutines -w" } #include "coro.h" diff --git a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C index 69810ab..acee888 100644 --- a/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C +++ b/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17 -w" } +// { dg-additional-options "-std=c++17 -fcoroutines -w" } #include <utility> #include <type_traits> diff --git a/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C b/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C index 370068f..f35faaf 100644 --- a/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C +++ b/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17 -fsyntax-only -w" } +// { dg-additional-options "-std=c++17 -fsyntax-only -fcoroutines -w" } #include <coroutine> diff --git a/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C b/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C index b2aaba1..ef3948c 100644 --- a/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C +++ b/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17 -w" } +// { dg-additional-options "-std=c++17 -fcoroutines -w" } #include <coroutine> diff --git a/gcc/testsuite/g++.dg/coroutines/coroutines.exp b/gcc/testsuite/g++.dg/coroutines/coroutines.exp deleted file mode 100644 index 395e3f7..0000000 --- a/gcc/testsuite/g++.dg/coroutines/coroutines.exp +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (C) 2018-2025 Free Software Foundation, Inc. - -# Contributed by Iain Sandoe <iain@sandoe.co.uk> under contract to Facebook. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Test C++ coroutines, requires c++17; doesn't, at present, seem much -# point in repeating these for other versions. - -# Load support procs. -load_lib g++-dg.exp - -# If a testcase doesn't have special options, use these. -global DEFAULT_CXXFLAGS -if ![info exists DEFAULT_CXXFLAGS] then { - set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long" -} - -set DEFAULT_COROFLAGS $DEFAULT_CXXFLAGS -lappend DEFAULT_COROFLAGS "-std=c++20" - -dg-init - -# Run the tests. -# g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \ -# "" $DEFAULT_COROFLAGS - -foreach test [lsort [find $srcdir/$subdir {*.[CH]}]] { - if [runtest_file_p $runtests $test] { - set nshort [file tail [file dirname $test]]/[file tail $test] - verbose "Testing $nshort $DEFAULT_COROFLAGS" 1 - dg-test $test "" $DEFAULT_COROFLAGS - set testcase [string range $test [string length "$srcdir/"] end] - } -} - -# done. -dg-finish diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C index fcea6f9..543f92f 100644 --- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C +++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++14" } +// { dg-additional-options "-std=c++14 -fcoroutines" } // { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } } #include "ramp-return.h" diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C index 0992924..d5ea3f9 100644 --- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C +++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C @@ -1,4 +1,4 @@ -// { dg-additional-options "-std=c++17" } +// { dg-additional-options "-std=c++17 -fcoroutines" } // { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } } #define DELETE_COPY_CTOR 1 #include "ramp-return.h" diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp index 81d0beb..73b5de1 100644 --- a/gcc/testsuite/g++.dg/modules/modules.exp +++ b/gcc/testsuite/g++.dg/modules/modules.exp @@ -36,7 +36,6 @@ if ![info exists DEFAULT_CXXFLAGS] then { set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long" } set DEFAULT_MODFLAGS $DEFAULT_CXXFLAGS -set MOD_STD_LIST { 17 2a 2b } dg-init @@ -261,44 +260,16 @@ proc srcdir {} { return $testdir } -# Return set of std options to iterate over, taken from g++-dg.exp & compat.exp +# Return set of std options to iterate over. proc module-init { src } { - set tmp [dg-get-options $src] - set option_list {} - set have_std 0 - set std_prefix "-std=c++" + set option_list [g++-std-flags $src] global extra_tool_flags set extra_tool_flags {} - global MOD_STD_LIST - - foreach op $tmp { - switch [lindex $op 0] { - "dg-options" { - set std_prefix "-std=gnu++" - if { [string match "*-std=*" [lindex $op 2]] } { - set have_std 1 - } - eval lappend extra_tool_flags [lindex $op 2] - } - "dg-additional-options" { - if { [string match "*-std=*" [lindex $op 2]] } { - set have_std 1 - } - eval lappend extra_tool_flags [lindex $op 2] - } - } - } - if { $have_std } { - lappend option_list "" - } elseif { [string match "*xtreme*" $src] } { + if { [llength $option_list] + && [string match "*xtreme*" $src] } { # Only run the xtreme tests once. - set x [lindex $MOD_STD_LIST end] - lappend option_list "${std_prefix}$x" - } else { - foreach x $MOD_STD_LIST { - lappend option_list "${std_prefix}$x" - } + set option_list [lrange [lsort $option_list] end end] } return $option_list diff --git a/gcc/testsuite/g++.dg/template/unify13.C b/gcc/testsuite/g++.dg/template/unify13.C new file mode 100644 index 0000000..ec7ca9d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/unify13.C @@ -0,0 +1,18 @@ +// PR c++/120161 + +template<class T, class U> +struct mp_list { }; + +template<class T> +struct Wrap { struct type { }; }; + +struct A : mp_list<Wrap<int>::type, void> + , mp_list<Wrap<long>::type, void> { }; + +template<class U> +void f(mp_list<Wrap<int>::type, U>*); + +int main() { + A a; + f(&a); +} diff --git a/gcc/testsuite/gcc.dg/pr116546.c b/gcc/testsuite/gcc.dg/pr116546.c new file mode 100644 index 0000000..b82dc27 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr116546.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-evrp" } */ + +extern long foo (void); +extern long bar (void); + +long +test1 (long n) +{ + n &= 7; + if (n == 4) { + if (n & 4) + return foo (); + else + return bar (); + } + return 0; +} + +long +test2 (long n) +{ + n &= 7; + if (n > 4) { + if (n & 4) + return foo (); + else + return bar (); + } + return 0; +} + +long +test3 (long n) +{ + n &= 7; + if (n >= 4) { + if (n & 4) + return foo (); + else + return bar (); + } + return 0; +} + +/* { dg-final { scan-tree-dump-not "bar" "evrp" } } */ diff --git a/gcc/testsuite/gcc.dg/pr120277.c b/gcc/testsuite/gcc.dg/pr120277.c new file mode 100644 index 0000000..f291e92 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr120277.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int a, b; +int c(int d, long e) { + switch (d) { + case 129: + a = 1; + case 128: + break; + default: + return 1; + } + *(int *)e = 0; +} +void f(int d, long e) { c(d, e); } +void g() { + int h = b * sizeof(int); + f(h + 7, h); +} +void main() {} diff --git a/gcc/testsuite/gcc.target/riscv/pr120223.c b/gcc/testsuite/gcc.target/riscv/pr120223.c new file mode 100644 index 0000000..fae21b6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/pr120223.c @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=thead-c906" } */ +long foo(long x) { return x ^ 0x80000000; } + diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 index 2af089e..d0751f3 100644 --- a/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 +++ b/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 @@ -25,6 +25,6 @@ contains allocate (array(1)%bigarr) end function end -! { dg-final { scan-tree-dump-times "builtin_malloc" 3 "original" } } +! { dg-final { scan-tree-dump-times "builtin_malloc" 4 "original" } } ! { dg-final { scan-tree-dump-times "builtin_free" 3 "original" } } -! { dg-final { scan-tree-dump-times "while \\(1\\)" 4 "original" } } +! { dg-final { scan-tree-dump-times "while \\(1\\)" 5 "original" } } diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03 b/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03 index 0753e33..8202d78 100644 --- a/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03 +++ b/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03 @@ -45,11 +45,10 @@ contains type(c), value :: d end subroutine - type(c) function c_init() ! { dg-warning "not set" } + type(c) function c_init() end function subroutine sub(d) type(u), value :: d end subroutine end program test_pr58586 - diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03 b/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03 index 4a55d73..9ff38e3 100644 --- a/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03 +++ b/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03 @@ -51,14 +51,14 @@ contains type(t), value :: d end subroutine - type(c) function c_init() ! { dg-warning "not set" } + type(c) function c_init() end function class(c) function c_init2() ! { dg-warning "not set" } allocatable :: c_init2 end function - type(c) function d_init(this) ! { dg-warning "not set" } + type(c) function d_init(this) class(d) :: this end function @@ -102,4 +102,3 @@ program test_pr58586 call add_c(oe%init()) deallocate(oe) end program - diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 b/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 index fd2db74..36c1245 100644 --- a/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 @@ -210,5 +210,5 @@ program main call v%free() deallocate(av) end program -! { dg-final { scan-tree-dump-times "__builtin_malloc" 22 "original" } } +! { dg-final { scan-tree-dump-times "__builtin_malloc" 23 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_free" 29 "original" } } diff --git a/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 b/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 index bdfa47b..406e031 100644 --- a/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 +++ b/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 @@ -129,5 +129,5 @@ contains prt_spec = name end function new_prt_spec3 end program main -! { dg-final { scan-tree-dump-times "__builtin_malloc" 15 "original" } } +! { dg-final { scan-tree-dump-times "__builtin_malloc" 16 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_free" 33 "original" } } diff --git a/gcc/testsuite/gfortran.dg/derived_result_5.f90 b/gcc/testsuite/gfortran.dg/derived_result_5.f90 new file mode 100644 index 0000000..1ba4d19 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/derived_result_5.f90 @@ -0,0 +1,123 @@ +! { dg-do run } +! { dg-additional-options "-O2 -Wreturn-type" } +! +! PR fortran/85750 - default-initialization and functions returning derived type + +module bar + implicit none + type ilist + integer :: count = 42 + integer, pointer :: ptr(:) => null() + end type ilist + + type jlist + real, allocatable :: a(:) + integer :: count = 23 + end type jlist + +contains + + function make_list(i) + integer, intent(in) :: i + type(ilist), dimension(2) :: make_list + make_list(i)%count = i + end function make_list + + function make_list_res(i) result(list) + integer, intent(in) :: i + type(ilist), dimension(2) :: list + list(i)%count = i + end function make_list_res + + function make_jlist(i) + integer, intent(in) :: i + type(jlist), dimension(2) :: make_jlist + make_jlist(i)%count = i + end function make_jlist + + function make_jlist_res(i) result(list) + integer, intent(in) :: i + type(jlist), dimension(2) :: list + list(i)%count = i + end function make_jlist_res + + function empty_ilist() + type(ilist), dimension(2) :: empty_ilist + end function + + function empty_jlist() + type(jlist), dimension(2) :: empty_jlist + end function + + function empty_ilist_res() result (res) + type(ilist), dimension(2) :: res + end function + + function empty_jlist_res() result (res) + type(jlist), dimension(2) :: res + end function + +end module bar + +program foo + use bar + implicit none + type(ilist) :: mylist(2) = ilist(count=-2) + type(jlist), allocatable :: yourlist(:) + + mylist = ilist(count=-1) + if (any (mylist%count /= [-1,-1])) stop 1 + mylist = empty_ilist() + if (any (mylist%count /= [42,42])) stop 2 + mylist = ilist(count=-1) + mylist = empty_ilist_res() + if (any (mylist%count /= [42,42])) stop 3 + + allocate(yourlist(1:2)) + if (any (yourlist%count /= [23,23])) stop 4 + yourlist = jlist(count=-1) + if (any (yourlist%count /= [-1,-1])) stop 5 + yourlist = empty_jlist() + if (any (yourlist%count /= [23,23])) stop 6 + yourlist = jlist(count=-1) + yourlist = empty_jlist_res() + if (any (yourlist%count /= [23,23])) stop 7 + + mylist = make_list(1) + if (any (mylist%count /= [1,42])) stop 11 + mylist = make_list(2) + if (any (mylist%count /= [42,2])) stop 12 + mylist = (make_list(1)) + if (any (mylist%count /= [1,42])) stop 13 + mylist = [make_list(2)] + if (any (mylist%count /= [42,2])) stop 14 + + mylist = make_list_res(1) + if (any (mylist%count /= [1,42])) stop 21 + mylist = make_list_res(2) + if (any (mylist%count /= [42,2])) stop 22 + mylist = (make_list_res(1)) + if (any (mylist%count /= [1,42])) stop 23 + mylist = [make_list_res(2)] + if (any (mylist%count /= [42,2])) stop 24 + + yourlist = make_jlist(1) + if (any (yourlist%count /= [1,23])) stop 31 + yourlist = make_jlist(2) + if (any (yourlist%count /= [23,2])) stop 32 + yourlist = (make_jlist(1)) + if (any (yourlist%count /= [1,23])) stop 33 + yourlist = [make_jlist(2)] + if (any (yourlist%count /= [23,2])) stop 34 + + yourlist = make_jlist_res(1) + if (any (yourlist%count /= [1,23])) stop 41 + yourlist = make_jlist_res(2) + if (any (yourlist%count /= [23,2])) stop 42 + yourlist = (make_jlist_res(1)) + if (any (yourlist%count /= [1,23])) stop 43 + yourlist = [make_jlist_res(2)] + if (any (yourlist%count /= [23,2])) stop 44 + + deallocate (yourlist) +end program foo diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp index 26bda65..042a917 100644 --- a/gcc/testsuite/lib/g++-dg.exp +++ b/gcc/testsuite/lib/g++-dg.exp @@ -27,6 +27,79 @@ proc g++-dg-prune { system text } { return [gcc-dg-prune $system $text] } +# Return a list of -std flags to use for TEST. +proc g++-std-flags { test } { + # If the testcase specifies a standard, use that one. + # If not, run it under several standards, allowing GNU extensions + # if there's a dg-options line. + if ![search_for $test "-std=*++"] { + if [search_for $test "dg-options"] { + set std_prefix "-std=gnu++" + } else { + set std_prefix "-std=c++" + } + + set low 0 + # Some directories expect certain minimums. + if { [string match "*/coroutines/*" $test] } { set low 20 } + if { [string match "*/modules/*" $test] } { set low 17 } + + # See g++.exp for the initial value of this list. + global gpp_std_list + if { [llength $gpp_std_list] > 0 } { + set std_list {} + foreach ver $gpp_std_list { + set cmpver $ver + if { $ver == 98 } { set cmpver 03 } + if { $ver ni $std_list + && $cmpver >= $low } { + lappend std_list $ver + } + } + } else { + # If the test mentions specific C++ versions, test those. + set lines [get_matching_lines $test {\{ dg* c++[0-9][0-9]}] + set std_list {} + foreach line $lines { + regexp {c\+\+([0-9][0-9])} $line -> ver + lappend std_list $ver + + if { $ver == 98 } { + # Leave low alone. + } elseif { [regexp {dg-do|dg-require-effective-target} $line] } { + set low $ver + } + } + #verbose "low: $low" 1 + + set std_list [lsort -unique $std_list] + + # If fewer than 3 specific versions are mentioned, add more. + # The order of this list is significant: first $cxx_default, + # then the oldest and newest, then others in rough order of + # importance based on test coverage and usage. + foreach ver { 17 98 26 11 20 14 23 } { + set cmpver $ver + if { $ver == 98 } { set cmpver 03 } + if { [llength $std_list] < 3 + && $ver ni $std_list + && $cmpver >= $low } { + lappend std_list $ver + } + } + verbose "std_list: $std_list" 1 + } + set option_list { } + foreach x $std_list { + if { $x eq "impcx" } then { set x "26 -fimplicit-constexpr" } + lappend option_list "${std_prefix}$x" + } + } else { + set option_list { "" } + } + return $option_list +} + # Modified dg-runtest that runs tests in multiple standard modes, # unless they specifically specify one standard. proc g++-dg-runtest { testcases flags default-extra-flags } { @@ -38,62 +111,7 @@ proc g++-dg-runtest { testcases flags default-extra-flags } { continue } - # If the testcase specifies a standard, use that one. - # If not, run it under several standards, allowing GNU extensions - # if there's a dg-options line. - if ![search_for $test "-std=*++"] { - if [search_for $test "dg-options"] { - set std_prefix "-std=gnu++" - } else { - set std_prefix "-std=c++" - } - - # See g++.exp for the initial value of this list. - global gpp_std_list - if { [llength $gpp_std_list] > 0 } { - set std_list $gpp_std_list - } else { - # If the test mentions specific C++ versions, test those. - set lines [get_matching_lines $test {\{ dg* c++[0-9][0-9]}] - set std_list {} - set low 0 - foreach line $lines { - regexp {c\+\+([0-9][0-9])} $line -> ver - lappend std_list $ver - - if { $ver == 98 } { - # Leave low alone. - } elseif { [regexp {dg-do|dg-require-effective-target} $line] } { - set low $ver - } - } - #verbose "low: $low" 1 - - set std_list [lsort -unique $std_list] - - # If fewer than 3 specific versions are mentioned, add more. - # The order of this list is significant: first $cxx_default, - # then the oldest and newest, then others in rough order of - # importance based on test coverage and usage. - foreach ver { 17 98 26 11 20 14 23 } { - set cmpver $ver - if { $ver == 98 } { set cmpver 03 } - if { [llength $std_list] < 3 - && $ver ni $std_list - && $cmpver > $low } { - lappend std_list $ver - } - } - verbose "std_list: $std_list" 1 - } - set option_list { } - foreach x $std_list { - if { $x eq "impcx" } then { set x "26 -fimplicit-constexpr" } - lappend option_list "${std_prefix}$x" - } - } else { - set option_list { "" } - } + set option_list [g++-std-flags $test] set nshort [file tail [file dirname $test]]/[file tail $test] diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc index 928459a..b342b14 100644 --- a/gcc/tree-cfg.cc +++ b/gcc/tree-cfg.cc @@ -3867,32 +3867,6 @@ verify_gimple_assign_unary (gassign *stmt) return false; - case NEGATE_EXPR: - case ABS_EXPR: - case BIT_NOT_EXPR: - case CONJ_EXPR: - /* Disallow pointer and offset types for many of the unary gimple. */ - if (POINTER_TYPE_P (lhs_type) - || TREE_CODE (lhs_type) == OFFSET_TYPE) - { - error ("invalid types for %qs", code_name); - debug_generic_expr (lhs_type); - debug_generic_expr (rhs1_type); - return true; - } - break; - - case PAREN_EXPR: - /* Disallow non arthmetic types on PAREN_EXPR. */ - if (AGGREGATE_TYPE_P (lhs_type)) - { - error ("invalid types for %qs", code_name); - debug_generic_expr (lhs_type); - debug_generic_expr (rhs1_type); - return true; - } - break; - case ABSU_EXPR: if (!ANY_INTEGRAL_TYPE_P (lhs_type) || !TYPE_UNSIGNED (lhs_type) @@ -3918,6 +3892,27 @@ verify_gimple_assign_unary (gassign *stmt) } return false; + case CONJ_EXPR: + if (TREE_CODE (lhs_type) != COMPLEX_TYPE) + { +diagnose_unary_lhs: + error ("invalid type for %qs", code_name); + debug_generic_expr (lhs_type); + return true; + } + break; + + case NEGATE_EXPR: + case ABS_EXPR: + case BIT_NOT_EXPR: + if (POINTER_TYPE_P (lhs_type) || TREE_CODE (lhs_type) == OFFSET_TYPE) + goto diagnose_unary_lhs; + /* FALLTHRU */ + case PAREN_EXPR: + if (AGGREGATE_TYPE_P (lhs_type)) + goto diagnose_unary_lhs; + break; + default: gcc_unreachable (); } diff --git a/gcc/value-range.cc b/gcc/value-range.cc index d2c14e7..ed3760f 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -31,25 +31,28 @@ along with GCC; see the file COPYING3. If not see #include "fold-const.h" #include "gimple-range.h" -// Return the bitmask inherent in a range. +// Return the bitmask inherent in a range : TYPE [MIN, MAX]. +// This use to be get_bitmask_from_range (). -static irange_bitmask -get_bitmask_from_range (tree type, - const wide_int &min, const wide_int &max) +irange_bitmask::irange_bitmask (tree type, + const wide_int &min, const wide_int &max) { unsigned prec = TYPE_PRECISION (type); - // All the bits of a singleton are known. if (min == max) { - wide_int mask = wi::zero (prec); - wide_int value = min; - return irange_bitmask (value, mask); + m_mask = wi::zero (prec); + m_value = min; + } + else + { + wide_int xorv = min ^ max; + // Mask will have leading zeros for all leading bits that are + // common, both zeros and ones. + m_mask = wi::mask (prec - wi::clz (xorv), false, prec); + // Now set value to those bits which are known, and zero the rest. + m_value = ~m_mask & min; } - - wide_int xorv = min ^ max; - xorv = wi::mask (prec - wi::clz (xorv), false, prec); - return irange_bitmask (wi::zero (prec), min | xorv); } void @@ -469,7 +472,7 @@ prange::set (tree type, const wide_int &min, const wide_int &max, } m_kind = VR_RANGE; - m_bitmask = get_bitmask_from_range (type, min, max); + m_bitmask = irange_bitmask (type, min, max); if (flag_checking) verify_range (); } @@ -583,7 +586,7 @@ prange::intersect (const vrange &v) } // Intersect all bitmasks: the old one, the new one, and the other operand's. - irange_bitmask new_bitmask = get_bitmask_from_range (m_type, m_min, m_max); + irange_bitmask new_bitmask (m_type, m_min, m_max); m_bitmask.intersect (new_bitmask); m_bitmask.intersect (r.m_bitmask); if (varying_compatible_p ()) @@ -2396,8 +2399,7 @@ irange::get_bitmask () const // in the mask. // // See also the note in irange_bitmask::intersect. - irange_bitmask bm - = get_bitmask_from_range (type (), lower_bound (), upper_bound ()); + irange_bitmask bm (type (), lower_bound (), upper_bound ()); if (!m_bitmask.unknown_p ()) bm.intersect (m_bitmask); return bm; @@ -2432,7 +2434,7 @@ irange::intersect_bitmask (const irange &r) { gcc_checking_assert (!undefined_p () && !r.undefined_p ()); - if (r.m_bitmask.unknown_p () || m_bitmask == r.m_bitmask) + if (m_bitmask == r.m_bitmask) return false; irange_bitmask bm = get_bitmask (); diff --git a/gcc/value-range.h b/gcc/value-range.h index f694298..74cdf29 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -136,6 +136,8 @@ public: irange_bitmask () { /* uninitialized */ } irange_bitmask (unsigned prec) { set_unknown (prec); } irange_bitmask (const wide_int &value, const wide_int &mask); + irange_bitmask (tree type, const wide_int &min, const wide_int &max); + wide_int value () const { return m_value; } wide_int mask () const { return m_mask; } void set_unknown (unsigned prec); diff --git a/libcpp/po/zh_CN.po b/libcpp/po/zh_CN.po index 467575b..2262520 100644 --- a/libcpp/po/zh_CN.po +++ b/libcpp/po/zh_CN.po @@ -2,22 +2,24 @@ # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the gcc package. # Meng Jie <zuxy.meng@gmail.com>, 2005-2010. +# Boyuan Yang <073plan@gmail.com>, 2025. +# Anbang LI <anbangli@foxmail.com>, 2025. # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024, 2025. # msgid "" msgstr "" -"Project-Id-Version: cpplib 15-b20250216\n" +"Project-Id-Version: cpplib 15.1-b20250316\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2025-03-14 22:05+0000\n" -"PO-Revision-Date: 2025-02-20 18:32+0800\n" -"Last-Translator: Zhanhaoxiang Zhang <zzhx2006@outlook.com>\n" +"PO-Revision-Date: 2025-05-15 12:47-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" #: charset.cc:759 #, gcc-internal-format, gfc-internal-format @@ -49,12 +51,12 @@ msgstr "字符 0x%lx 在执行字符集中不是单字节的" #: charset.cc:1549 msgid "universal character names are only valid in C++ and C99" -msgstr "Unicode 字符名只在 C++ 和 C99 中有效" +msgstr "通用字符名只在 C++ 和 C99 中有效" #: charset.cc:1553 #, gcc-internal-format msgid "C99%'s universal character names are incompatible with C90" -msgstr "C99 的 Unicode 字符名与 C90 不兼容" +msgstr "C99 的通用字符名与 C90 不兼容" #: charset.cc:1556 #, gcc-internal-format @@ -64,29 +66,29 @@ msgstr "%<\\%c%> 的意义与在传统 C 中不同" #: charset.cc:1595 #, gcc-internal-format msgid "%<\\N%> not followed by %<{%>" -msgstr "%<\\N%> 后没有 %<{%>" +msgstr "%<\\N%> 后面没有 %<{%>" #: charset.cc:1625 msgid "empty named universal character escape sequence; treating it as separate tokens" -msgstr "空的命名 Unicode 字符转义序列;将其视为独立 token 处理" +msgstr "空命名通用字符转义序列; 将其视为单独的词元" #: charset.cc:1632 msgid "empty named universal character escape sequence" -msgstr "空的命名 Unicode 字符转义序列" +msgstr "空的命名通用字符转义序列" #: charset.cc:1639 msgid "named universal character escapes are only valid in C++23" -msgstr "命名 Unicode 字符转义序列(named universal character escapes)仅在 C++23 中有效" +msgstr "命名通用字符转义仅在 C++23 中有效" #: charset.cc:1659 #, gcc-internal-format msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens" -msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符;将其视为独立 token 处理" +msgstr "%<\\N{%.*s}%> 不是有效的通用字符; 将其视为独立的词元" #: charset.cc:1665 #, gcc-internal-format msgid "%<\\N{%.*s}%> is not a valid universal character" -msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符" +msgstr "%<\\N{%.*s}%> 不是一个有效的通用字符" #: charset.cc:1675 #, gcc-internal-format @@ -96,7 +98,7 @@ msgstr "你是说 %<\\N{%s}%> 吗?" #: charset.cc:1693 #, gcc-internal-format msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens" -msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束;将其视为独立 token 处理" +msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束;将其视为独立词元" #: charset.cc:1702 #, gcc-internal-format @@ -110,7 +112,7 @@ msgstr "在 %<_cpp_valid_ucn%> 中但不是一个 UCN" #: charset.cc:1753 msgid "empty delimited escape sequence; treating it as separate tokens" -msgstr "空的带分隔符的转义序列;将其视为独立 token 处理" +msgstr "空的带分隔符的转义序列;将其视为独立词元" #: charset.cc:1760 charset.cc:2163 charset.cc:2280 msgid "empty delimited escape sequence" @@ -128,12 +130,12 @@ msgstr "带分隔符的转义序列仅在 C2Y 中有效" #: charset.cc:1794 #, gcc-internal-format msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens" -msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束;将其视为独立 token 处理" +msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束;将其视为独立词元" #: charset.cc:1806 #, gcc-internal-format msgid "incomplete universal character name %.*s" -msgstr "不完全的 Unicode 字符名 %.*s" +msgstr "不完整的通用字符名 %.*s" #: charset.cc:1810 #, gcc-internal-format @@ -143,12 +145,12 @@ msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束" #: charset.cc:1818 #, gcc-internal-format msgid "%.*s is not a valid universal character" -msgstr "%.*s 不是一个有效的 Unicode 字符" +msgstr "%.*s 不是一个有效的通用字符" #: charset.cc:1834 charset.cc:1838 #, gcc-internal-format msgid "%.*s is not a valid universal character name before C23" -msgstr "在C23之前,%.*s 不是一个有效的 Unicode 字符名" +msgstr "在C23之前,%.*s 不是一个有效的通用字符名" #: charset.cc:1854 lex.cc:2096 #, gcc-internal-format @@ -158,17 +160,17 @@ msgstr "%<$%> 出现在标识符或数字中" #: charset.cc:1864 #, gcc-internal-format msgid "universal character %.*s is not valid in an identifier" -msgstr "Unicode 字符 %.*s 在标识符中无效" +msgstr "通用字符 %.*s 在标识符中无效" #: charset.cc:1868 #, gcc-internal-format msgid "universal character %.*s is not valid at the start of an identifier" -msgstr "Unicode 字符 %.*s 在标识符开头无效" +msgstr "通用字符 %.*s 在标识符开头无效" #: charset.cc:1875 #, gcc-internal-format msgid "%.*s is outside the UCS codespace" -msgstr "%.*s 超出了 UCS 码空间" +msgstr "%.*s 在 UCS 码空间之外" #: charset.cc:1919 charset.cc:3072 msgid "converting UCN to source character set" @@ -186,7 +188,7 @@ msgstr "扩展字符 %.*s 在标识符中无效" #: charset.cc:2007 #, gcc-internal-format msgid "extended character %.*s is not valid at the start of an identifier" -msgstr "扩展字符 %.*s 在标识符开头无效" +msgstr "扩展字符 %.*s 在标识符的开头无效" #: charset.cc:2129 #, gcc-internal-format @@ -208,10 +210,9 @@ msgid "hex escape sequence out of range" msgstr "16 进制转义序列越界" #: charset.cc:2247 -#, fuzzy, gcc-internal-format -#| msgid "%<\\o%> not followed by %<}%>" +#, gcc-internal-format msgid "%<\\o%> not followed by %<{%>" -msgstr "%<\\o%> 后没有 %<}%>" +msgstr "%<\\o%> 后面没有 %<{%>" #: charset.cc:2305 #, gcc-internal-format @@ -461,16 +462,14 @@ msgid "%<#embed%> not supported in traditional C" msgstr "在传统C中不支持 %<#embed%>" #: directives.cc:1370 -#, fuzzy, gcc-internal-format -#| msgid "%<#%s%> before C++23 is a GCC extension" +#, gcc-internal-format msgid "%<#%s%> before C++26 is a GCC extension" -msgstr "%<#%s%> 在C++23以前是一个 GCC 扩展" +msgstr "%<#%s%> 在 C++26 以前是一个 GCC 扩展" #: directives.cc:1379 -#, fuzzy, gcc-internal-format -#| msgid "%<#%s%> is a GCC extension" +#, gcc-internal-format msgid "%<#%s%> is a C23 feature" -msgstr "%<#%s%> 是一个 GCC 扩展" +msgstr "%<#%s%> 是一个 C23 特性" #: directives.cc:1436 #, gcc-internal-format diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index d465fb6..dd31cff 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -142,7 +142,7 @@ Existing tests </a></span></dt><dt><span class="section"><a href="manual/test.html#test.exception.safety.containers"> C++11 Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.streamattach"> No <code class="code">stream::attach(int fd)</code> </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.support_cxx98"> diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 09afdb3..4441d9c 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -490,7 +490,7 @@ to provide the symbols for the experimental C++ Contracts support.</p></div><div Symbols for the Filesystem TS and C++23 <code class="filename"><stacktrace></code> header were added to the static library <code class="filename">libstdc++exp.a</code>. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_141"></a><code class="constant">14</code></h3></div></div></div><p> -Deprecate the non-standard overload that allows <code class="code">std::setfill</code> +Deprecated the non-standard overload that allows <code class="code">std::setfill</code> to be used with <code class="code">std::basic_istream</code>. </p><p> The extension allowing <code class="code">std::basic_string</code> to be instantiated @@ -509,4 +509,7 @@ and removed in C++20: </p><p> Nested <code class="code">result_type</code> and <code class="code">argument_type</code> removed from <code class="classname">std::hash</code> specializations for C++20. +</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_16"></a><code class="constant">16</code></h3></div></div></div><p> +Deprecated the non-standard overload of <code class="code">std::fabs</code> for +<code class="code">std::complex</code> arguments. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ABI Policy and Guidelines </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Backwards Compatibility</td></tr></table></div></body></html>
\ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/appendix.html b/libstdc++-v3/doc/html/manual/appendix.html index 69a0e00..e71ea54 100644 --- a/libstdc++-v3/doc/html/manual/appendix.html +++ b/libstdc++-v3/doc/html/manual/appendix.html @@ -16,7 +16,7 @@ Existing tests </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers"> C++11 Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach"> No <code class="code">stream::attach(int fd)</code> </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98"> diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index c76ef29..e0f52db 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -14,7 +14,7 @@ Existing tests </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers"> C++11 Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach"> No <code class="code">stream::attach(int fd)</code> </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98"> diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index a7af178..5f91092 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -123,7 +123,7 @@ Existing tests </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers"> C++11 Requirements Test Sequence Descriptions -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>. </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach"> No <code class="code">stream::attach(int fd)</code> </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98"> diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index 814473f..73b9f17 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -1117,7 +1117,7 @@ header were added to the static library <filename>libstdc++exp.a</filename>. <section xml:id="api.rel_141"><info><title><constant>14</constant></title></info> <para> -Deprecate the non-standard overload that allows <code>std::setfill</code> +Deprecated the non-standard overload that allows <code>std::setfill</code> to be used with <code>std::basic_istream</code>. </para> @@ -1152,4 +1152,11 @@ Nested <code>result_type</code> and <code>argument_type</code> removed from </section> +<section xml:id="api.rel_16"><info><title><constant>16</constant></title></info> +<para> +Deprecated the non-standard overload of <code>std::fabs</code> for +<code>std::complex</code> arguments. +</para> +</section> + </section> diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 59ef905..d9d2d8a 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -969,7 +969,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif - // 26.2.7/4: arg(__z): Returns the phase angle of __z. + // C++11 26.4.7 [complex.value.ops]/4: arg(z): Returns the phase angle of z. template<typename _Tp> inline _Tp __complex_arg(const complex<_Tp>& __z) @@ -2123,8 +2123,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp> std::complex<_Tp> acosh(const std::complex<_Tp>&); template<typename _Tp> std::complex<_Tp> asinh(const std::complex<_Tp>&); template<typename _Tp> std::complex<_Tp> atanh(const std::complex<_Tp>&); - // DR 595. - template<typename _Tp> _Tp fabs(const std::complex<_Tp>&); template<typename _Tp> inline std::complex<_Tp> @@ -2309,7 +2307,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION acos(const std::complex<_Tp>& __z) { return __complex_acos(__z.__rep()); } #else - /// acos(__z) [8.1.2]. + /// acos(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function cacos, defined // in subclause 7.3.5.1. template<typename _Tp> @@ -2345,7 +2343,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION asin(const std::complex<_Tp>& __z) { return __complex_asin(__z.__rep()); } #else - /// asin(__z) [8.1.3]. + /// asin(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function casin, defined // in subclause 7.3.5.2. template<typename _Tp> @@ -2389,7 +2387,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION atan(const std::complex<_Tp>& __z) { return __complex_atan(__z.__rep()); } #else - /// atan(__z) [8.1.4]. + /// atan(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function catan, defined // in subclause 7.3.5.3. template<typename _Tp> @@ -2425,7 +2423,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION acosh(const std::complex<_Tp>& __z) { return __complex_acosh(__z.__rep()); } #else - /// acosh(__z) [8.1.5]. + /// acosh(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function cacosh, defined // in subclause 7.3.6.1. template<typename _Tp> @@ -2464,7 +2462,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION asinh(const std::complex<_Tp>& __z) { return __complex_asinh(__z.__rep()); } #else - /// asinh(__z) [8.1.6]. + /// asinh(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function casin, defined // in subclause 7.3.6.2. template<typename _Tp> @@ -2508,7 +2506,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION atanh(const std::complex<_Tp>& __z) { return __complex_atanh(__z.__rep()); } #else - /// atanh(__z) [8.1.7]. + /// atanh(__z) C++11 26.4.8 [complex.transcendentals] // Effects: Behaves the same as C99 function catanh, defined // in subclause 7.3.6.3. template<typename _Tp> @@ -2518,22 +2516,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template<typename _Tp> + _GLIBCXX11_DEPRECATED_SUGGEST("std::abs") inline _Tp - /// fabs(__z) [8.1.8]. + /// fabs(__z) TR1 8.1.8 [tr.c99.cmplx.fabs] // Effects: Behaves the same as C99 function cabs, defined // in subclause 7.3.8.1. fabs(const std::complex<_Tp>& __z) { return std::abs(__z); } - /// Additional overloads [8.1.9]. + // Additional overloads C++11 26.4.9 [cmplx.over] + template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type arg(_Tp __x) { typedef typename __gnu_cxx::__promote<_Tp>::__type __type; #if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) - return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) - : __type(); + return __builtin_signbit(__type(__x)) + ? __type(3.1415926535897932384626433832795029L) : __type(); #else return std::arg(std::complex<__type>(__x)); #endif diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format index bfda589..b1823db 100644 --- a/libstdc++-v3/include/std/format +++ b/libstdc++-v3/include/std/format @@ -5464,13 +5464,22 @@ namespace __format debug_string }; - /// @cond undocumented + /** @brief A constant determining how a range should be formatted. + * + * The primary template of `std::format_kind` cannot be instantiated. + * There is a partial specialization for input ranges and you can + * specialize the variable template for your own cv-unqualified types + * that satisfy the `ranges::input_range` concept. + * + * @since C++23 + */ template<typename _Rg> - constexpr auto format_kind = - __primary_template_not_defined( - format_kind<_Rg> // you can specialize this for non-const input ranges - ); + constexpr auto format_kind = []{ + static_assert(false, "cannot use primary template of 'std::format_kind'"); + return type_identity<_Rg>{}; + }(); + /// @cond undocumented template<typename _Tp> consteval range_format __fmt_kind() diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan index aee96dd..47cfa40 100644 --- a/libstdc++-v3/include/std/mdspan +++ b/libstdc++-v3/include/std/mdspan @@ -163,10 +163,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _IndexType, size_t... _Extents> class extents { - static_assert(is_integral_v<_IndexType>, "_IndexType must be integral."); + static_assert(__is_standard_integer<_IndexType>::value, + "IndexType must be a signed or unsigned integer type"); static_assert( (__mdspan::__valid_static_extent<_Extents, _IndexType> && ...), - "Extents must either be dynamic or representable as _IndexType"); + "Extents must either be dynamic or representable as IndexType"); public: using index_type = _IndexType; diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc index b654e39..f9c1c01 100644 --- a/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc @@ -1,8 +1,12 @@ // { dg-do compile { target c++23 } } #include<mdspan> -std::extents<char, size_t(1) << 9> e1; // { dg-error "from here" } -std::extents<double, 1> e2; // { dg-error "from here" } -// { dg-prune-output "dynamic or representable as _IndexType" } -// { dg-prune-output "must be integral" } +#include <cstdint> + +std::extents<uint8_t, size_t(1) << 9> e1; // { dg-error "from here" } +std::extents<char, 1> e2; // { dg-error "from here" } +std::extents<bool, 1> e3; // { dg-error "from here" } +std::extents<double, 1> e4; // { dg-error "from here" } +// { dg-prune-output "dynamic or representable as IndexType" } +// { dg-prune-output "signed or unsigned integer" } // { dg-prune-output "invalid use of incomplete type" } diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc b/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc index 16204aa..e71fdc5 100644 --- a/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc +++ b/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc @@ -1,6 +1,7 @@ // { dg-do run { target c++23 } } #include <mdspan> +#include <cstdint> #include <testsuite_hooks.h> constexpr size_t dyn = std::dynamic_extent; @@ -20,7 +21,6 @@ static_assert(std::is_same_v<std::extents<int, 1, 2>::rank_type, size_t>); static_assert(std::is_unsigned_v<std::extents<int, 2>::size_type>); static_assert(std::is_unsigned_v<std::extents<unsigned int, 2>::size_type>); -static_assert(std::is_same_v<std::extents<char, 2>::index_type, char>); static_assert(std::is_same_v<std::extents<int, 2>::index_type, int>); static_assert(std::is_same_v<std::extents<unsigned int, 2>::index_type, unsigned int>); @@ -49,7 +49,7 @@ static_assert(check_rank_return_types<int, 1>()); // Check that the static extents don't take up space. static_assert(sizeof(std::extents<int, 1, dyn>) == sizeof(int)); -static_assert(sizeof(std::extents<char, 1, dyn>) == sizeof(char)); +static_assert(sizeof(std::extents<short, 1, dyn>) == sizeof(short)); template<typename Extents> class Container @@ -58,7 +58,7 @@ class Container [[no_unique_address]] std::extents<size_t> b0; }; -static_assert(sizeof(Container<std::extents<char, 1, 2>>) == sizeof(int)); +static_assert(sizeof(Container<std::extents<short, 1, 2>>) == sizeof(int)); static_assert(sizeof(Container<std::extents<size_t, 1, 2>>) == sizeof(int)); // operator= @@ -103,7 +103,7 @@ test_deduction_all() test_deduction<0>(); test_deduction<1>(1); test_deduction<2>(1.0, 2.0f); - test_deduction<3>(int(1), char(2), size_t(3)); + test_deduction<3>(int(1), short(2), size_t(3)); return true; } diff --git a/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc b/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc new file mode 100644 index 0000000..36c483e --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc @@ -0,0 +1,13 @@ +// { dg-do compile } +// Bug 120235 std::fabs(const std::complex<T>&) should not be defined + +#include <complex> + +void test_pr120235(std::complex<double> c) +{ + (void) std::fabs(c); + // { dg-error "no matching function" "" { target c++98_only } 8 } + // { dg-warning "deprecated: use 'std::abs'" "" { target c++11 } 8 } +} + +// { dg-prune-output "no type named '__type'" } diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index fbc9f7f..da1f424 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -586,6 +586,7 @@ proc v3_target_compile { source dest type options } { global tool lappend options "additional_flags=-fdiagnostics-plain-output" + lappend options "additional_flags=-Wabi=20"; if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { lappend options "libs=${gluefile}" diff --git a/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc b/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc index bf8619d..0d761ae 100644 --- a/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc +++ b/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc @@ -5,9 +5,14 @@ #include <format> -template<auto> struct Tester { }; +void test() +{ + (void) std::format_kind<void>; // { dg-error "here" } + (void) std::format_kind<const void>; // { dg-error "here" } + (void) std::format_kind<int>; // { dg-error "here" } + (void) std::format_kind<int&>; // { dg-error "here" } + (void) std::format_kind<const int(&)[10]>; // { dg-error "here" } + (void) std::format_kind<void()>; // { dg-error "here" } +} -Tester<std::format_kind<const int(&)[1]>> t; // { dg-error "here" } - -// { dg-error "use of 'std::format_kind" "" { target *-*-* } 0 } -// { dg-error "primary_template_not_defined" "" { target *-*-* } 0 } +// { dg-error "cannot use primary template of 'std::format_kind'" "" { target *-*-* } 0 } |