Results for 15.0.0 20240531 (experimental) [remotes/origin/HEAD r15-932-g3a873c0a7b] (GCC) testsuite on powerpc64le-unknown-linux-gnu
git commit g:3a873c0a7bc8183de95a6103b507101a25eed413 gcc-descr r15-932-g3a873c0a7bc818 power8 Linux 5.4.0-182-generic ppc64le GNU Make 4.2.1 DejaGnu: DejaGnu version 1.6.2 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 03:59:28 UTC 2024 (revision r15-932-g3a873c0a7b) Native configuration is powerpc64le-unknown-linux-gnu === gcc tests === Running target unix XPASS: gcc.dg/Wtrampolines.c standard descriptors (test for warnings, line 32) XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 *x == (char) 25 FAIL: gcc.dg/guality/pr36728-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr36728-3.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i == 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i1 == 2 * 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i2 == 3 * 37 XPASS: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 j == 28 + 37 FAIL: gcc.dg/guality/pr41447-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr54200.c -O1 -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O2 -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O3 -g -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -Os -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 y == 25 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 z == 6 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 23 y == 117 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 23 z == 8 FAIL: gcc.dg/guality/pr54519-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 17 y == 25 FAIL:
[Bug target/115282] [15 regression] gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c fails after r15-812-gc71886f2ca2e46
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115282 Richard Biener changed: What|Removed |Added Target Milestone|--- |15.0 Keywords||testsuite-fail Component|other |target Summary|15 regression] |[15 regression] |gcc.dg/vect/costmodel/ppc/c |gcc.dg/vect/costmodel/ppc/c |ostmodel-slp-12.c fails |ostmodel-slp-12.c fails |after |after |r15-812-gc71886f2ca2e46 |r15-812-gc71886f2ca2e46 --- Comment #1 from Richard Biener --- I don't see a good reason why, but I don't have a BE cross around to check myself. Does BE vect maybe not have unsigned integer vector multiplication support?
[Bug target/115299] [14/15 regression] pr86722.c failed to eliminate branch.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115299 --- Comment #2 from Hongtao Liu --- > Maybe r14-53-g675b1a7f113adb . Probably, current cost model may need adjustment.
Regressions on native/releases/gcc-13 at commit r13-8811 vs commit r13-8806 on Linux/x86_64
Regressions on releases/gcc-13 at commit r13-8811 vs commit r13-8806 on Linux/x86_64 New failures: New passes: FAIL: 30_threads/future/members/poll.cc execution test
[Bug target/115299] [14/15 regression] pr86722.c failed to eliminate branch.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115299 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |14.2 Summary|[14 regression] pr86722.c |[14/15 regression] |failed to eliminate branch. |pr86722.c failed to ||eliminate branch.
[Bug target/115299] [14 regression] pr86722.c failed to eliminate branch.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115299 Andrew Pinski changed: What|Removed |Added Last reconfirmed||2024-05-31 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski --- ce differences: 13: ``` == Pass 2 == IF-THEN-JOIN block found, pass 2, test 4, then 6, join 7 scanning new insn with uid = 68. scanning new insn with uid = 69. scanning new insn with uid = 70. scanning new insn with uid = 71. scanning new insn with uid = 72. scanning new insn with uid = 73. Removing jump 14. deleting insn with uid = 14. deleting insn with uid = 5. deleting block 6 Conversion succeeded on pass 2. ``` 14/trunk: ``` IF-THEN-JOIN block found, pass 2, test 4, then 6, join 7 == no more changes 3 possible IF blocks searched. 1 IF blocks converted. 1 true changes made. ``` Maybe r14-53-g675b1a7f113adb .
Results for 14.1.1 20240531 [releases/gcc-14 r14-10262-gcd161b335c2] (GCC) testsuite on i686-pc-linux-gnu
LAST_UPDATED: Fri May 31 03:20:08 UTC 2024 (revision r14-10262-gcd161b335c2) Native configuration is i686-pc-linux-gnu === gcc tests === Running target unix UNRESOLVED: gcc.c-torture/compile/2009-1.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-1.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-1.c -Os UNRESOLVED: gcc.c-torture/compile/2009-2.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-2.c -Os UNRESOLVED: gcc.c-torture/compile/981001-2.c -O0 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O1 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/981001-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/981001-2.c -Os UNRESOLVED: gcc.c-torture/compile/pr61159.c -O0 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O1 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/pr61159.c -O3 -g UNRESOLVED: gcc.c-torture/compile/pr61159.c -Os UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O0 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O1 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O3 -g UNRESOLVED: gcc.c-torture/execute/20030125-1.c -Os FAIL: gcc.dg/debug/dwarf2/asm-line1.c scan-assembler is_stmt 1 FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 1\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 2\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])?\\n UNRESOLVED: c-c++-common/Waddress-5.c -Wc++-compat UNRESOLVED: gcc.dg/Walways-true-2.c FAIL: gcc.dg/Wstringop-overflow-14.c (test for excess errors) FAIL: gcc.dg/Wstringop-overflow-14.c pr102706 (test for warnings, line 40) UNRESOLVED: gcc.dg/attr-copy-6.c UNRESOLVED: gcc.dg/attr-weak-hidden-1.c UNRESOLVED: gcc.dg/attr-weak-hidden-1a.c UNRESOLVED: gcc.dg/attr-weakref-1-darwin.c UNRESOLVED: gcc.dg/attr-weakref-1.c UNRESOLVED: gcc.dg/attr-weakref-2.c UNRESOLVED: gcc.dg/attr-weakref-3.c UNRESOLVED: gcc.dg/attr-weakref-4.c UNRESOLVED: gcc.dg/darwin-weakimport-1.c UNRESOLVED: gcc.dg/darwin-weakimport-2.c UNRESOLVED: gcc.dg/darwin-weakimport-3.c UNRESOLVED: gcc.dg/darwin-weakref-1.c UNRESOLVED: gcc.dg/pr77587.c UNRESOLVED: gcc.dg/pr77587a.c UNRESOLVED: gcc.dg/pr84739.c FAIL: gcc.dg/pr90263.c scan-assembler mempcpy FAIL: gcc.dg/pr96573.c scan-tree-dump optimized "__builtin_bswap|VEC_PERM_EXPR[^\\n\\r]*7, 6, 5, 4, 3, 2, 1, 0" UNRESOLVED: gcc.dg/visibility-21.c FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL:
[gcc r15-934] C23: allow aliasing for types derived from structs with variable size
https://gcc.gnu.org/g:d2cfe8a73b3c4195a25cde28e1641ef36ebb08c1 commit r15-934-gd2cfe8a73b3c4195a25cde28e1641ef36ebb08c1 Author: Martin Uecker Date: Fri May 24 12:35:27 2024 +0200 C23: allow aliasing for types derived from structs with variable size Previously, we set the aliasing set of structures with variable size struct foo { int x[n]; char b; }; to zero. The reason is that such types can be compatible to diffrent structure types which are incompatible. struct foo { int x[2]; char b; }; struct foo { int x[3]; char b; }; But it is not enough to set the aliasing set to zero, because derived types would then still end up in different equivalence classes even though they might be compatible. Instead those types should be set to structural equivalency. We also add checking assertions that ensure that TYPE_CANONICAL is set correctly for all tagged types. gcc/c/ * c-decl.cc (finish_struct): Do not set TYPE_CANONICAL for structure or unions with variable size. * c-objc-common.cc (c_get_alias_set): Do not set alias set to zero. * c-typeck.cc (comptypes_verify): New function. (comptypes,comptypes_same_p,comptypes_check_enum_int): Add assertion. (comptypes_equiv_p): Add assertion that ensures that compatible types have the same equivalence class. (tagged_types_tu_compatible_p): Remove now unneeded special case. gcc/testsuite/ * gcc.dg/gnu23-tag-alias-8.c: New test. Diff: --- gcc/c/c-decl.cc | 2 +- gcc/c/c-objc-common.cc | 5 - gcc/c/c-typeck.cc| 37 +--- gcc/testsuite/gcc.dg/gnu23-tag-alias-8.c | 24 + 4 files changed, 59 insertions(+), 9 deletions(-) diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index 6e6606c9570..9f7d55c0b10 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -9749,7 +9749,7 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes, C_TYPE_BEING_DEFINED (t) = 0; /* Set type canonical based on equivalence class. */ - if (flag_isoc23) + if (flag_isoc23 && !C_TYPE_VARIABLE_SIZE (t)) { if (c_struct_htab == NULL) c_struct_htab = hash_table::create_ggc (61); diff --git a/gcc/c/c-objc-common.cc b/gcc/c/c-objc-common.cc index 283f6a8ae26..738e899a2a9 100644 --- a/gcc/c/c-objc-common.cc +++ b/gcc/c/c-objc-common.cc @@ -420,11 +420,6 @@ c_var_mod_p (tree x, tree fn ATTRIBUTE_UNUSED) alias_set_type c_get_alias_set (tree t) { - /* Structs with variable size can alias different incompatible - structs. Let them alias anything. */ - if (RECORD_OR_UNION_TYPE_P (t) && C_TYPE_VARIABLE_SIZE (t)) -return 0; - return c_common_get_alias_set (t); } diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index 09b2c265a46..48934802148 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -1167,6 +1167,28 @@ common_type (tree t1, tree t2) return c_common_type (t1, t2); } + + +/* Helper function for comptypes. For two compatible types, return 1 + if they pass consistency checks. In particular we test that + TYPE_CANONICAL is set correctly, i.e. the two types can alias. */ + +static bool +comptypes_verify (tree type1, tree type2) +{ + if (TYPE_CANONICAL (type1) != TYPE_CANONICAL (type2) + && !TYPE_STRUCTURAL_EQUALITY_P (type1) + && !TYPE_STRUCTURAL_EQUALITY_P (type2)) +{ + /* FIXME: check other types. */ + if (RECORD_OR_UNION_TYPE_P (type1) + || TREE_CODE (type1) == ENUMERAL_TYPE + || TREE_CODE (type2) == ENUMERAL_TYPE) + return false; +} + return true; +} + struct comptypes_data { bool enum_and_int_p; bool different_types_p; @@ -1188,6 +1210,8 @@ comptypes (tree type1, tree type2) struct comptypes_data data = { }; bool ret = comptypes_internal (type1, type2, ); + gcc_checking_assert (!ret || comptypes_verify (type1, type2)); + return ret ? (data.warning_needed ? 2 : 1) : 0; } @@ -1201,6 +1225,8 @@ comptypes_same_p (tree type1, tree type2) struct comptypes_data data = { }; bool ret = comptypes_internal (type1, type2, ); + gcc_checking_assert (!ret || comptypes_verify (type1, type2)); + if (data.different_types_p) return false; @@ -1218,6 +1244,8 @@ comptypes_check_enum_int (tree type1, tree type2, bool *enum_and_int_p) bool ret = comptypes_internal (type1, type2, ); *enum_and_int_p = data.enum_and_int_p; + gcc_checking_assert (!ret || comptypes_verify (type1, type2)); + return ret ? (data.warning_needed ? 2 : 1) : 0; } @@ -1232,6 +1260,8 @@ comptypes_check_different_types (tree type1, tree type2, bool ret = comptypes_internal (type1, type2, ); *different_types_p = data.different_types_p; + gcc_checking_assert (!ret || comptypes_verify (type1, type2)); + return ret ? (data.warning_needed ? 2 :
[Bug tree-optimization/115157] incorrect TBAA for derived types involving enum types
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115157 --- Comment #3 from GCC Commits --- The master branch has been updated by Martin Uecker : https://gcc.gnu.org/g:867d1264fe71d4291194373d1a1c409cac97a597 commit r15-933-g867d1264fe71d4291194373d1a1c409cac97a597 Author: Martin Uecker Date: Sun May 19 23:13:22 2024 +0200 C: allow aliasing of compatible types derived from enumeral types [PR115157] Aliasing of enumeral types with the underlying integer is now allowed by setting the aliasing set to zero. But this does not allow aliasing of derived types which are compatible as required by ISO C. Instead, initially set structural equality. Then set TYPE_CANONICAL and update pointers and main variants when the type is completed (as done for structures and unions in C23). PR tree-optimization/115157 PR tree-optimization/115177 gcc/c/ * c-decl.cc (shadow_tag-warned,parse_xref_tag,start_enum, finish_enum): Set SET_TYPE_STRUCTURAL_EQUALITY / TYPE_CANONICAL. * c-objc-common.cc (get_alias_set): Remove special case. (get_aka_type): Add special case. gcc/c-family/ * c-attribs.cc (handle_hardbool_attribute): Set TYPE_CANONICAL for hardbools. gcc/ * godump.cc (go_output_typedef): Use TYPE_MAIN_VARIANT instead of TYPE_CANONICAL. gcc/testsuite/ * gcc.dg/enum-alias-1.c: New test. * gcc.dg/enum-alias-2.c: New test. * gcc.dg/enum-alias-3.c: New test. * gcc.dg/enum-alias-4.c: New test.
[Bug tree-optimization/115177] incorrect TBAA for derived types involving hardbool types
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115177 --- Comment #3 from GCC Commits --- The master branch has been updated by Martin Uecker : https://gcc.gnu.org/g:867d1264fe71d4291194373d1a1c409cac97a597 commit r15-933-g867d1264fe71d4291194373d1a1c409cac97a597 Author: Martin Uecker Date: Sun May 19 23:13:22 2024 +0200 C: allow aliasing of compatible types derived from enumeral types [PR115157] Aliasing of enumeral types with the underlying integer is now allowed by setting the aliasing set to zero. But this does not allow aliasing of derived types which are compatible as required by ISO C. Instead, initially set structural equality. Then set TYPE_CANONICAL and update pointers and main variants when the type is completed (as done for structures and unions in C23). PR tree-optimization/115157 PR tree-optimization/115177 gcc/c/ * c-decl.cc (shadow_tag-warned,parse_xref_tag,start_enum, finish_enum): Set SET_TYPE_STRUCTURAL_EQUALITY / TYPE_CANONICAL. * c-objc-common.cc (get_alias_set): Remove special case. (get_aka_type): Add special case. gcc/c-family/ * c-attribs.cc (handle_hardbool_attribute): Set TYPE_CANONICAL for hardbools. gcc/ * godump.cc (go_output_typedef): Use TYPE_MAIN_VARIANT instead of TYPE_CANONICAL. gcc/testsuite/ * gcc.dg/enum-alias-1.c: New test. * gcc.dg/enum-alias-2.c: New test. * gcc.dg/enum-alias-3.c: New test. * gcc.dg/enum-alias-4.c: New test.
[gcc r15-933] C: allow aliasing of compatible types derived from enumeral types [PR115157]
https://gcc.gnu.org/g:867d1264fe71d4291194373d1a1c409cac97a597 commit r15-933-g867d1264fe71d4291194373d1a1c409cac97a597 Author: Martin Uecker Date: Sun May 19 23:13:22 2024 +0200 C: allow aliasing of compatible types derived from enumeral types [PR115157] Aliasing of enumeral types with the underlying integer is now allowed by setting the aliasing set to zero. But this does not allow aliasing of derived types which are compatible as required by ISO C. Instead, initially set structural equality. Then set TYPE_CANONICAL and update pointers and main variants when the type is completed (as done for structures and unions in C23). PR tree-optimization/115157 PR tree-optimization/115177 gcc/c/ * c-decl.cc (shadow_tag-warned,parse_xref_tag,start_enum, finish_enum): Set SET_TYPE_STRUCTURAL_EQUALITY / TYPE_CANONICAL. * c-objc-common.cc (get_alias_set): Remove special case. (get_aka_type): Add special case. gcc/c-family/ * c-attribs.cc (handle_hardbool_attribute): Set TYPE_CANONICAL for hardbools. gcc/ * godump.cc (go_output_typedef): Use TYPE_MAIN_VARIANT instead of TYPE_CANONICAL. gcc/testsuite/ * gcc.dg/enum-alias-1.c: New test. * gcc.dg/enum-alias-2.c: New test. * gcc.dg/enum-alias-3.c: New test. * gcc.dg/enum-alias-4.c: New test. Diff: --- gcc/c-family/c-attribs.cc | 1 + gcc/c/c-decl.cc | 11 +-- gcc/c/c-objc-common.cc | 7 ++- gcc/godump.cc | 10 +++--- gcc/testsuite/gcc.dg/enum-alias-1.c | 24 gcc/testsuite/gcc.dg/enum-alias-2.c | 25 + gcc/testsuite/gcc.dg/enum-alias-3.c | 26 ++ gcc/testsuite/gcc.dg/enum-alias-4.c | 22 ++ 8 files changed, 112 insertions(+), 14 deletions(-) diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc index 605469dd7dd..e3833ed5f20 100644 --- a/gcc/c-family/c-attribs.cc +++ b/gcc/c-family/c-attribs.cc @@ -1074,6 +1074,7 @@ handle_hardbool_attribute (tree *node, tree name, tree args, TREE_SET_CODE (*node, ENUMERAL_TYPE); ENUM_UNDERLYING_TYPE (*node) = orig; + TYPE_CANONICAL (*node) = TYPE_CANONICAL (orig); tree false_value; if (args) diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index b691b91b3db..6e6606c9570 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -5051,7 +5051,7 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned) if (t == NULL_TREE) { t = make_node (code); - if (flag_isoc23 && code != ENUMERAL_TYPE) + if (flag_isoc23 || code == ENUMERAL_TYPE) SET_TYPE_STRUCTURAL_EQUALITY (t); pushtag (input_location, name, t); } @@ -8828,7 +8828,7 @@ parser_xref_tag (location_t loc, enum tree_code code, tree name, the forward-reference will be altered into a real type. */ ref = make_node (code); - if (flag_isoc23 && code != ENUMERAL_TYPE) + if (flag_isoc23 || code == ENUMERAL_TYPE) SET_TYPE_STRUCTURAL_EQUALITY (ref); if (code == ENUMERAL_TYPE) { @@ -9919,6 +9919,7 @@ start_enum (location_t loc, struct c_enum_contents *the_enum, tree name, { enumtype = make_node (ENUMERAL_TYPE); TYPE_SIZE (enumtype) = NULL_TREE; + SET_TYPE_STRUCTURAL_EQUALITY (enumtype); pushtag (loc, name, enumtype); if (fixed_underlying_type != NULL_TREE) { @@ -9935,6 +9936,8 @@ start_enum (location_t loc, struct c_enum_contents *the_enum, tree name, TYPE_SIZE (enumtype) = NULL_TREE; TYPE_PRECISION (enumtype) = TYPE_PRECISION (fixed_underlying_type); ENUM_UNDERLYING_TYPE (enumtype) = fixed_underlying_type; + TYPE_CANONICAL (enumtype) = TYPE_CANONICAL (fixed_underlying_type); + c_update_type_canonical (enumtype); layout_type (enumtype); } } @@ -10094,6 +10097,10 @@ finish_enum (tree enumtype, tree values, tree attributes) ENUM_UNDERLYING_TYPE (enumtype) = c_common_type_for_size (TYPE_PRECISION (tem), TYPE_UNSIGNED (tem)); + TYPE_CANONICAL (enumtype) = + TYPE_CANONICAL (ENUM_UNDERLYING_TYPE (enumtype)); + c_update_type_canonical (enumtype); + layout_type (enumtype); } diff --git a/gcc/c/c-objc-common.cc b/gcc/c/c-objc-common.cc index 42a62c84fe7..283f6a8ae26 100644 --- a/gcc/c/c-objc-common.cc +++ b/gcc/c/c-objc-common.cc @@ -130,6 +130,8 @@ get_aka_type (tree type) result = get_aka_type (orig_type); } + else if (TREE_CODE (type) == ENUMERAL_TYPE) +return type; else { tree canonical = TYPE_CANONICAL (type); @@ -418,11 +420,6 @@ c_var_mod_p (tree x, tree fn ATTRIBUTE_UNUSED) alias_set_type
[Bug target/115299] New: [14 regression] pr86722.c failed to eliminate branch.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115299 Bug ID: 115299 Summary: [14 regression] pr86722.c failed to eliminate branch. Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: missed-optimization, needs-bisection Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: liuhongt at gcc dot gnu.org Target Milestone: --- Target: x86_64-*-* i?86-*-* void f(double*d,double*e){ for(;d
Results for 13.3.1 20240531 [releases/gcc-13 r13-8811-g173f8763a66] (GCC) testsuite on i686-pc-linux-gnu
LAST_UPDATED: Fri May 31 03:15:08 UTC 2024 (revision r13-8811-g173f8763a66) Native configuration is i686-pc-linux-gnu === gcc tests === Running target unix UNRESOLVED: gcc.c-torture/compile/2009-1.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-1.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-1.c -Os UNRESOLVED: gcc.c-torture/compile/2009-2.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-2.c -Os UNRESOLVED: gcc.c-torture/compile/981001-2.c -O0 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O1 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/981001-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/981001-2.c -Os UNRESOLVED: gcc.c-torture/compile/pr61159.c -O0 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O1 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/pr61159.c -O3 -g UNRESOLVED: gcc.c-torture/compile/pr61159.c -Os UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O0 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O1 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O3 -g UNRESOLVED: gcc.c-torture/execute/20030125-1.c -Os FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O0 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O1 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -Os (test for excess errors) FAIL: gcc.dg/debug/dwarf2/asm-line1.c scan-assembler is_stmt 1 FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 1\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 2\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])?\\n UNRESOLVED: c-c++-common/Waddress-5.c -Wc++-compat UNRESOLVED: gcc.dg/Walways-true-2.c FAIL: gcc.dg/Wstringop-overflow-14.c (test for excess errors) FAIL: gcc.dg/Wstringop-overflow-14.c pr102706 (test for warnings, line 40) UNRESOLVED: gcc.dg/attr-copy-6.c UNRESOLVED: gcc.dg/attr-weak-hidden-1.c UNRESOLVED: gcc.dg/attr-weak-hidden-1a.c UNRESOLVED: gcc.dg/attr-weakref-1-darwin.c UNRESOLVED: gcc.dg/attr-weakref-1.c UNRESOLVED: gcc.dg/attr-weakref-2.c UNRESOLVED: gcc.dg/attr-weakref-3.c UNRESOLVED: gcc.dg/attr-weakref-4.c UNRESOLVED: gcc.dg/darwin-weakimport-1.c UNRESOLVED: gcc.dg/darwin-weakimport-2.c UNRESOLVED: gcc.dg/darwin-weakimport-3.c UNRESOLVED: gcc.dg/darwin-weakref-1.c UNRESOLVED: gcc.dg/pr77587.c UNRESOLVED: gcc.dg/pr77587a.c UNRESOLVED: gcc.dg/pr84739.c FAIL: gcc.dg/pr90263.c scan-assembler mempcpy FAIL: gcc.dg/pr96573.c scan-tree-dump optimized "__builtin_bswap|VEC_PERM_EXPR[^\\n\\r]*7, 6, 5, 4, 3, 2, 1, 0" UNRESOLVED: gcc.dg/visibility-21.c FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c
Results for 14.1.1 20240531 [releases/gcc-14 r14-10262-gcd161b335c2] (GCC) testsuite on x86_64-pc-linux-gnu
LAST_UPDATED: Fri May 31 03:20:09 UTC 2024 (revision r14-10262-gcd161b335c2) Native configuration is x86_64-pc-linux-gnu === gcc tests === Running target unix XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 14 y == 2 FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects
Re: [PATCH 3/3] [APX CCMP] Support ccmp for float compare
On Wed, May 15, 2024 at 4:21 PM Hongyu Wang wrote: > > The ccmp insn itself doesn't support fp compare, but x86 has fp comi > insn that changes EFLAG which can be the scc input to ccmp. Allow > scalar fp compare in ix86_gen_ccmp_first except ORDERED/UNORDERD > compare which can not be identified in ccmp. Ok if the second patch(middle-end part) is approved. > > gcc/ChangeLog: > > * config/i386/i386-expand.cc (ix86_gen_ccmp_first): Add fp > compare and check the allowed fp compare type. > (ix86_gen_ccmp_next): Adjust compare_code input to ccmp for > fp compare. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/apx-ccmp-1.c: Add test for fp compare. > * gcc.target/i386/apx-ccmp-2.c: Likewise. > --- > gcc/config/i386/i386-expand.cc | 53 -- > gcc/testsuite/gcc.target/i386/apx-ccmp-1.c | 45 +- > gcc/testsuite/gcc.target/i386/apx-ccmp-2.c | 47 +++ > 3 files changed, 138 insertions(+), 7 deletions(-) > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc > index f00525e449f..7507034dc91 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -25571,18 +25571,58 @@ ix86_gen_ccmp_first (rtx_insn **prep_seq, rtx_insn > **gen_seq, >if (op_mode == VOIDmode) > op_mode = GET_MODE (op1); > > + /* We only supports following scalar comparisons that use just 1 > + instruction: DI/SI/QI/HI/DF/SF/HF. > + Unordered/Ordered compare cannot be corretly indentified by > + ccmp so they are not supported. */ >if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode > - || op_mode == QImode)) > + || op_mode == QImode || op_mode == DFmode || op_mode == SFmode > + || op_mode == HFmode) > + || code == ORDERED > + || code == UNORDERED) > { >end_sequence (); >return NULL_RTX; > } > >/* Canonicalize the operands according to mode. */ > - if (!nonimmediate_operand (op0, op_mode)) > -op0 = force_reg (op_mode, op0); > - if (!x86_64_general_operand (op1, op_mode)) > -op1 = force_reg (op_mode, op1); > + if (SCALAR_INT_MODE_P (op_mode)) > +{ > + if (!nonimmediate_operand (op0, op_mode)) > + op0 = force_reg (op_mode, op0); > + if (!x86_64_general_operand (op1, op_mode)) > + op1 = force_reg (op_mode, op1); > +} > + else > +{ > + /* op0/op1 can be canonicallized from expand_fp_compare, so > +just adjust the code to make it generate supported fp > +condition. */ > + if (ix86_fp_compare_code_to_integer (code) == UNKNOWN) > + { > + /* First try to split condition if we don't need to honor > +NaNs, as the ORDERED/UNORDERED check always fall > +through. */ > + if (!HONOR_NANS (op_mode)) > + { > + rtx_code first_code; > + split_comparison (code, op_mode, _code, ); > + } > + /* Otherwise try to swap the operand order and check if > +the comparison is supported. */ > + else > + { > + code = swap_condition (code); > + std::swap (op0, op1); > + } > + > + if (ix86_fp_compare_code_to_integer (code) == UNKNOWN) > + { > + end_sequence (); > + return NULL_RTX; > + } > + } > +} > >*prep_seq = get_insns (); >end_sequence (); > @@ -25647,6 +25687,9 @@ ix86_gen_ccmp_next (rtx_insn **prep_seq, rtx_insn > **gen_seq, rtx prev, >dfv = ix86_get_flags_cc ((rtx_code) cmp_code); > >prev_code = GET_CODE (prev); > + /* Fixup FP compare code here. */ > + if (GET_MODE (XEXP (prev, 0)) == CCFPmode) > +prev_code = ix86_fp_compare_code_to_integer (prev_code); > >if (bit_code != AND) > prev_code = reverse_condition (prev_code); > diff --git a/gcc/testsuite/gcc.target/i386/apx-ccmp-1.c > b/gcc/testsuite/gcc.target/i386/apx-ccmp-1.c > index 5a2dad89f1f..e4e112f07e0 100644 > --- a/gcc/testsuite/gcc.target/i386/apx-ccmp-1.c > +++ b/gcc/testsuite/gcc.target/i386/apx-ccmp-1.c > @@ -1,5 +1,5 @@ > /* { dg-do compile { target { ! ia32 } } } */ > -/* { dg-options "-O2 -mapx-features=ccmp" } */ > +/* { dg-options "-O2 -ffast-math -mapx-features=ccmp" } */ > > int > f1 (int a) > @@ -56,8 +56,49 @@ f9 (int a, int b) >return a == 3 || a == 0; > } > > +int > +f10 (float a, int b, float c) > +{ > + return a > c || b < 19; > +} > + > +int > +f11 (float a, int b) > +{ > + return a == 0.0 && b > 21; > +} > + > +int > +f12 (double a, int b) > +{ > + return a < 3.0 && b != 23; > +} > + > +int > +f13 (double a, double b, int c, int d) > +{ > + a += b; > + c += d; > + return a != b || c == d; > +} > + > +int > +f14 (double a, int b) > +{ > + return b != 0 && a < 1.5; > +} > + > +int > +f15 (double a, double b, int c, int d) > +{ > + return c != d || a <= b; > +} > + > /* { dg-final {
Re: [PATCH 1/3] [APX CCMP] Support APX CCMP
On Wed, May 15, 2024 at 4:24 PM Hongyu Wang wrote: > > APX CCMP feature implements conditional compare which executes compare > when EFLAGS matches certain condition. > > CCMP introduces default flags value (dfv), when conditional compare does > not execute, it will directly set the flags according to dfv. > > The instruction goes like > > ccmpeq {dfv=sf,of,cf,zf} %rax, %r16 > > For this instruction, it will test EFLAGS regs if it matches conditional > code EQ, if yes, compare %rax and %r16 like legacy cmp. If no, the > EFLAGS will be updated according to dfv, which means SF,OF,CF,ZF are > set. PF will be set according to CF in dfv, and AF will always be > cleared. > > The dfv part can be a combination of sf,of,cf,zf, like {dfv=cf,zf} which > sets CF and ZF only and clear others, or {dfv=} which clears all EFLAGS. > > To enable CCMP, we implemented the target hook TARGET_GEN_CCMP_FIRST and > TARGET_GEN_CCMP_NEXT to reuse the current ccmp infrastructure. Also we > extended the cstorem4 optab to support storing different CCmode to fit > current ccmp infrasturcture. Ok. > > gcc/ChangeLog: > > * config/i386/i386-expand.cc (ix86_gen_ccmp_first): New function > that test if the first compare can be generated. > (ix86_gen_ccmp_next): New function to emit a simgle compare and ccmp > sequence. > * config/i386/i386-opts.h (enum apx_features): Add apx_ccmp. > * config/i386/i386-protos.h (ix86_gen_ccmp_first): New proto > declare. > (ix86_gen_ccmp_next): Likewise. > (ix86_get_flags_cc): Likewise. > * config/i386/i386.cc (ix86_flags_cc): New enum. > (ix86_ccmp_dfv_mapping): New string array to map conditional > code to dfv. > (ix86_print_operand): Handle special dfv flag for CCMP. > (ix86_get_flags_cc): New function to return x86 CC enum. > (TARGET_GEN_CCMP_FIRST): Define. > (TARGET_GEN_CCMP_NEXT): Likewise. > * config/i386/i386.h (TARGET_APX_CCMP): Define. > * config/i386/i386.md (@ccmp): New define_insn to support > ccmp. > (UNSPEC_APX_DFV): New unspec for ccmp dfv. > (ALL_CC): New mode iterator. > (cstorecc4): Change to ... > (cstore4) ... this, use ALL_CC to loop through all > available CCmodes. > * config/i386/i386.opt (apx_ccmp): Add enum value for ccmp. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/apx-ccmp-1.c: New compile test. > * gcc.target/i386/apx-ccmp-2.c: New runtime test. > --- > gcc/config/i386/i386-expand.cc | 121 + > gcc/config/i386/i386-opts.h| 6 +- > gcc/config/i386/i386-protos.h | 5 + > gcc/config/i386/i386.cc| 50 + > gcc/config/i386/i386.h | 1 + > gcc/config/i386/i386.md| 35 +- > gcc/config/i386/i386.opt | 3 + > gcc/testsuite/gcc.target/i386/apx-ccmp-1.c | 63 +++ > gcc/testsuite/gcc.target/i386/apx-ccmp-2.c | 57 ++ > 9 files changed, 337 insertions(+), 4 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/apx-ccmp-1.c > create mode 100644 gcc/testsuite/gcc.target/i386/apx-ccmp-2.c > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc > index 1ab22fe7973..f00525e449f 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -25554,4 +25554,125 @@ ix86_expand_fast_convert_bf_to_sf (rtx val) >return ret; > } > > +rtx > +ix86_gen_ccmp_first (rtx_insn **prep_seq, rtx_insn **gen_seq, > + rtx_code code, tree treeop0, tree treeop1) > +{ > + if (!TARGET_APX_CCMP) > +return NULL_RTX; > + > + rtx op0, op1, res; > + machine_mode op_mode; > + > + start_sequence (); > + expand_operands (treeop0, treeop1, NULL_RTX, , , EXPAND_NORMAL); > + > + op_mode = GET_MODE (op0); > + if (op_mode == VOIDmode) > +op_mode = GET_MODE (op1); > + > + if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode > + || op_mode == QImode)) > +{ > + end_sequence (); > + return NULL_RTX; > +} > + > + /* Canonicalize the operands according to mode. */ > + if (!nonimmediate_operand (op0, op_mode)) > +op0 = force_reg (op_mode, op0); > + if (!x86_64_general_operand (op1, op_mode)) > +op1 = force_reg (op_mode, op1); > + > + *prep_seq = get_insns (); > + end_sequence (); > + > + start_sequence (); > + > + res = ix86_expand_compare (code, op0, op1); > + > + if (!res) > +{ > + end_sequence (); > + return NULL_RTX; > +} > + *gen_seq = get_insns (); > + end_sequence (); > + > + return res; > +} > + > +rtx > +ix86_gen_ccmp_next (rtx_insn **prep_seq, rtx_insn **gen_seq, rtx prev, > + rtx_code cmp_code, tree treeop0, tree treeop1, > + rtx_code bit_code) > +{ > + if (!TARGET_APX_CCMP) > +return NULL_RTX; > + > + rtx
Re: [PATCH] i386: Optimize EQ/NE comparison between avx512 kmask and -1.
On Tue, May 28, 2024 at 4:00 PM Hu, Lin1 wrote: > > Hi all, > > This patch aims to acheive EQ/NE comparison between avx512 kmask and -1 > by using kxortest with checking CF. > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,-m64}. Ok for trunk? Ok. > > BRs, > Lin > > gcc/ChangeLog: > > PR target/113609 > * config/i386/sse.md > (*kortest_cmp_setcc): New define_insn_and_split. > (*kortest_cmp_jcc): Ditto. > > gcc/testsuite/ChangeLog: > > PR target/113609 > * gcc.target/i386/pr113609-1.c: New test. > * gcc.target/i386/pr113609-2.c: Ditto. > --- > gcc/config/i386/sse.md | 67 +++ > gcc/testsuite/gcc.target/i386/pr113609-1.c | 194 + > gcc/testsuite/gcc.target/i386/pr113609-2.c | 161 + > 3 files changed, 422 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/pr113609-1.c > create mode 100644 gcc/testsuite/gcc.target/i386/pr113609-2.c > > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md > index b59c988fc31..34fd2e4afac 100644 > --- a/gcc/config/i386/sse.md > +++ b/gcc/config/i386/sse.md > @@ -2201,6 +2201,73 @@ (define_expand "kortest" > UNSPEC_KORTEST))] >"TARGET_AVX512F") > > +;; Optimize cmp + setcc with mask register by kortest + setcc. > +(define_insn_and_split "*kortest_cmp_setcc" > + [(set (match_operand:QI 0 "nonimmediate_operand" "=qm, qm") > +(match_operator:QI 1 "bt_comparison_operator" > + [(match_operand:SWI1248_AVX512BWDQ_64 2 "register_operand" "?k, > ") > +(const_int -1)])) > + (clobber (reg:CC FLAGS_REG))] > + "TARGET_AVX512BW" > + "#" > + "&& reload_completed" > + [(const_int 0)] > +{ > + if (MASK_REGNO_P (REGNO (operands[2]))) > +{ > + emit_insn (gen_kortest_ccc (operands[2], operands[2])); > + operands[4] = gen_rtx_REG (CCCmode, FLAGS_REG); > +} > + else > +{ > + operands[4] = gen_rtx_REG (CCZmode, FLAGS_REG); > + emit_insn (gen_rtx_SET (operands[4], > + gen_rtx_COMPARE (CCZmode, > + operands[2], > + constm1_rtx))); > +} > + ix86_expand_setcc (operands[0], > +GET_CODE (operands[1]), > +operands[4], > +const0_rtx); > + DONE; > +}) > + > +;; Optimize cmp + jcc with mask register by kortest + jcc. > +(define_insn_and_split "*kortest_cmp_jcc" > + [(set (pc) > + (if_then_else > + (match_operator 0 "bt_comparison_operator" > + [(match_operand:SWI1248_AVX512BWDQ_64 1 "register_operand" "?k, > ") > + (const_int -1)]) > + (label_ref (match_operand 2)) > + (pc))) > + (clobber (reg:CC FLAGS_REG))] > + "TARGET_AVX512BW" > + "#" > + "&& reload_completed" > + [(const_int 0)] > +{ > + if (MASK_REGNO_P (REGNO (operands[1]))) > +{ > + emit_insn (gen_kortest_ccc (operands[1], operands[1])); > + operands[4] = gen_rtx_REG (CCCmode, FLAGS_REG); > +} > + else > +{ > + operands[4] = gen_rtx_REG (CCZmode, FLAGS_REG); > + emit_insn (gen_rtx_SET (operands[4], > + gen_rtx_COMPARE (CCZmode, > + operands[1], > + constm1_rtx))); > +} > + ix86_expand_branch (GET_CODE (operands[0]), > + operands[4], > + const0_rtx, > + operands[2]); > + DONE; > +}) > + > (define_insn "kunpckhi" >[(set (match_operand:HI 0 "register_operand" "=k") > (ior:HI > diff --git a/gcc/testsuite/gcc.target/i386/pr113609-1.c > b/gcc/testsuite/gcc.target/i386/pr113609-1.c > new file mode 100644 > index 000..f0639b8500a > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr113609-1.c > @@ -0,0 +1,194 @@ > +/* PR target/113609 */ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -march=x86-64-v4" } */ > +/* { dg-final { scan-assembler-not "^cmp" } } */ > +/* { dg-final { scan-assembler-not "\[ \\t\]+sete" { target { ! ia32 } } } } > */ > +/* { dg-final { scan-assembler-not "\[ \\t\]+setne" { target { ! ia32 } } } > } */ > +/* { dg-final { scan-assembler-not "\[ \\t\]+je" { target { ! ia32 } } } } */ > +/* { dg-final { scan-assembler-not "\[ \\t\]+jne" { target { ! ia32 } } } } > */ > +/* { dg-final { scan-assembler-times "\[ \\t\]+sete" 1 { target { ia32 } } } > } */ > +/* { dg-final { scan-assembler-times "\[ \\t\]+setne" 1 { target { ia32 } } > } } */ > +/* { dg-final { scan-assembler-times "\[ \\t\]+je" 1 { target { ia32 } } } } > */ > +/* { dg-final { scan-assembler-times "\[ \\t\]+jne" 2 { target { ia32 } } } > } */ > +/* { dg-final { scan-assembler-times "kortest" 12 { target { ia32 } } } } */ > +/* { dg-final { scan-assembler-times "kortest" 17 { target { ! ia32 } } } } > */ > + > +#include > + > +unsigned int >
Re: Question about generating vpmovzxbd instruction without using the interfaces in immintrin.h
On Fri, May 31, 2024 at 10:58 AM Hanke Zhang via Gcc wrote: > > Hi, > I've recently been trying to hand-write code to trigger automatic > vectorization optimizations in GCC on Intel x86 machines (without > using the interfaces in immintrin.h), but I'm running into a problem > where I can't seem to get the concise `vpmovzxbd` or similar > instructions. > > My requirement is to convert 8 `uint8_t` elements to `int32_t` type > and print the output. If I use the interface (_mm256_cvtepu8_epi32) in > immintrin.h, the code is as follows: > > int immintrin () { > int size = 1, offset = 3; > uint8_t* a = malloc(sizeof(char) * size); > > __v8si b = (__v8si)_mm256_cvtepu8_epi32(*(__m128i *)(a + offset)); > > for (int i = 0; i < 8; i++) { > printf("%d\n", b[i]); > } > } > > After compiling with -mavx2 -O3, you can get concise and efficient > instructions. (You can see it here: https://godbolt.org/z/8ojzdav47) > > But if I do not use this interface and instead use a for-loop or the > `__builtin_convertvector` interface provided by GCC, I cannot achieve > the above effect. The code is as follows: > > typedef uint8_t v8qiu __attribute__ ((__vector_size__ (8))); > int forloop () { > int size = 1, offset = 3; > uint8_t* a = malloc(sizeof(char) * size); > > v8qiu av = *(v8qiu *)(a + offset); > __v8si b = {}; > for (int i = 0; i < 8; i++) { > b[i] = (a + offset)[i]; > } > > for (int i = 0; i < 8; i++) { > printf("%d\n", b[i]); > } > } > > int builtin_cvt () { > int size = 1, offset = 3; > uint8_t* a = malloc(sizeof(char) * size); > > v8qiu av = *(v8qiu *)(a + offset); > __v8si b = __builtin_convertvector(av, __v8si); > > for (int i = 0; i < 8; i++) { > printf("%d\n", b[i]); > } > } > > The instructions generated by both functions are redundant and > complex, and are quite difficult to read compared to calling > `_mm256_cvtepu8_epi32` directly. (You can see it here as well: > https://godbolt.org/z/8ojzdav47) > > What I want to ask is: How should I write the source code to get > assembly instructions similar to directly calling > _mm256_cvtepu8_epi32? > > Or would it be easier if I modified the GIMPLE directly? But it seems > that there is no relevant expression or interface directly > corresponding to `vpmovzxbd` in GIMPLE. https://gcc.gnu.org/pipermail/gcc-patches/2024-May/652484.html We're working on the patch to optimize __builtin_convertvector, after that it can be as optimal as intel intrinsic. > > Thanks > Hanke Zhang -- BR, Hongtao
[Bug tree-optimization/115298] New: [15 Regression] Various targets failing DSE tests after recent changes
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115298 Bug ID: 115298 Summary: [15 Regression] Various targets failing DSE tests after recent changes Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: law at gcc dot gnu.org Target Milestone: --- A few targets (nds32be-elf, nds32le-elf, avr-elf) have started failing a few tests after recent aliasing changes: Tests that now fail, but worked before (9 tests): nds32-sim: gcc: gcc.c-torture/execute/strcpy-1.c -O3 -g (test for excess errors) nds32-sim: gcc: gcc.dg/tree-ssa/pr86061.c scan-tree-dump-times dse1 "Deleted dead call" 1 nds32-sim: gcc: gcc.dg/tree-ssa/pr86061.c scan-tree-dump-times dse1 "Deleted dead call" 1 nds32-sim: gcc: gcc.dg/tree-ssa/ssa-dse-37.c scan-tree-dump-times dse1 "Deleted dead call" 2 nds32-sim: gcc: gcc.dg/tree-ssa/ssa-dse-37.c scan-tree-dump-times dse1 "Deleted dead call" 2 nds32-sim: gcc: gcc.dg/tree-ssa/ssa-dse-37.c scan-tree-dump-times dse1 "Trimming statement " 4 nds32-sim: gcc: gcc.dg/tree-ssa/ssa-dse-37.c scan-tree-dump-times dse1 "Trimming statement " 4 nds32-sim: gcc: gcc.dg/tree-ssa/strncpy-1.c scan-tree-dump-not optimized "memset" nds32-sim: gcc: gcc.dg/tree-ssa/strncpy-1.c scan-tree-dump-not optimized "memset" This was bisected to: commit c08b0d3f7b3539b26031de31d88dea6b94474577 Author: Richard Biener Date: Mon May 27 10:41:02 2024 +0200 tree-optimization/115236 - more points-to *ANYTHING = x fixes The stored-to ANYTHING handling has more holes, uncovered by treating volatile accesses as ANYTHING. We fail to properly build the pred and succ graphs, in particular we may not elide direct nodes from receiving from STOREDANYTHING. PR tree-optimization/115236 * tree-ssa-structalias.cc (build_pred_graph): Properly handle *ANYTHING = X. (build_succ_graph): Likewise. Do not elide direct nodes from receiving from STOREDANYTHING. * gcc.dg/pr115236.c: New testcase. I haven't done any deeper analysis.
Results for 13.3.1 20240531 [releases/gcc-13 r13-8811-g173f8763a66] (GCC) testsuite on x86_64-pc-linux-gnu
LAST_UPDATED: Fri May 31 03:15:09 UTC 2024 (revision r13-8811-g173f8763a66) Native configuration is x86_64-pc-linux-gnu === gcc tests === Running target unix FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O0 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O1 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -Os (test for excess errors) FAIL: gcc.dg/vect/slp-21.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorizing stmts using SLP" 2 FAIL: gcc.dg/vect/slp-21.c scan-tree-dump-times vect "vectorizing stmts using SLP" 2 FAIL: gcc.dg/vect/slp-perm-9.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorizing stmts using SLP" 1 FAIL: gcc.dg/vect/slp-perm-9.c scan-tree-dump-times vect "vectorizing stmts using SLP" 1 FAIL: gcc.target/i386/avx512bw-pr103750-2.c scan-assembler-not kmov FAIL: gcc.target/i386/avx512bw-pr88465.c scan-assembler-times kxnor[dq][ \\t] 2 FAIL: gcc.target/i386/avx512dq-pr88465.c scan-assembler-times kxnorb[ \\t] 1 FAIL: gcc.target/i386/avx512f-pr103750-2.c scan-assembler-not kmov FAIL: gcc.target/i386/avx512f-pr88465.c scan-assembler-times kxnorw[ \\t] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%xmm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%ymm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%xmm[0-9], *[^,]* 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%ymm[0-9], *[^,]* 1 FAIL: gcc.target/i386/avx512fp16-pr103750-2.c scan-assembler-not kmov XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kmovb[\\t ] 4 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times korb[\\t ] 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kxorb[\\t ] 1 FAIL: gcc.target/i386/minmax-10.c scan-assembler-not cmp FAIL: gcc.target/i386/minmax-10.c scan-assembler-times test 6 FAIL: gcc.target/i386/minmax-9.c scan-assembler-times test 3 FAIL: gcc.target/i386/pieces-memset-11.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-14.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-2.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-20.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-23.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-29.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-30.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-33.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-34.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-37.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-44.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-5.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pr107548-1.c scan-assembler-not addl FAIL: gcc.target/i386/pr107548-1.c scan-assembler-times \\tv?movd\\t 3 FAIL: gcc.target/i386/pr107548-1.c scan-assembler-times v?paddd 6 FAIL: gcc.target/i386/pr107548-2.c scan-assembler v?psrldq FAIL: gcc.target/i386/pr107548-2.c scan-assembler-not \\taddq\\t FAIL: gcc.target/i386/pr107548-2.c scan-assembler-times v?paddq 2 FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6 XPASS: gcc.target/i386/sse2-shiftqihi-constant-1.c scan-assembler-times pand[^\\n]*%xmm 3 XPASS: gcc.target/i386/sse2-shiftqihi-constant-1.c scan-assembler-times psllw[^\\n]*%xmm 1 === gcc Summary for unix === # of expected passes186695 # of unexpected failures43 # of unexpected successes 5 # of expected failures 1431 # of unsupported tests 2446 Running target unix/-m32 FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O0 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O1 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -Os (test for excess errors) FAIL:
Re: Reverted recent patches to resource.cc
On 5/30/24 8:09 PM, Hans-Peter Nilsson wrote: Date: Wed, 29 May 2024 21:23:58 -0600 Cc: gcc-patches@gcc.gnu.org I don't bother with qemu.exp at all. I've set up binfmt handlers so that I can execute foreign binaries. So given a root filesystem, I can chroot into it and do whatever I need. As far as dejagnu is concerned it looks like the native system. Interesting. In a Docker setup (or similar container)? I've got docker containers for some of these. m68k, alpha, s390 for example. They're based off debian base images. I don't have anything for sparc and I don't see a base image to build from. If there was a base image, then a Dockerfile like this would get you started: FROM sparc64/debian:latest # Basic environment variables so we can apt-get without interactive prompts ENV LC_ALL C ENV DEBIAN_FRONTEND noninteractive ENV TZ=Etc/UTC RUN apt-get update && apt-get -y install gcc dejagnu binutils default-jre-headless git build-essential autoconf bison flex gawk make texinfo help2man libncurses5-dev python3-dev python3-distutils libtool libtool-bin unzip wget curl rsync texinfo g++ libmpc-dev libgmp-dev libmpfr-dev libgmp-dev python3 libisl-dev rsync vim automake autoconf autotools-dev unzip help2man libtool libtool-bin sudo curl wget pyt hon3-dev bzip2 xz-utils gdb bc libssl-dev libelf-dev With the lack of an existing docker image, you can probably use debootstrap to construct an initial chroot, the import that into docker, adding whatever bits you need to do the build (ie, compilers, dejagnu, make, texinfo, blah blah blah) via apt until it works. It's been a while since I've done it, but I'm pretty sure that's how I got things going on the sh4 and sh4eb platforms. The JRE bits are only needed because these get launched as a docker swarm service and thus need to connect to the Jenkins server using JNLP. Some of the packages are only needed for kernel builds or glibc builds. Jeff
Results for 15.0.0 20240531 (experimental) [master r15-932-g3a873c0a7b] (GCC) testsuite on powerpc64-unknown-linux-gnu
git commit g:3a873c0a7bc8183de95a6103b507101a25eed413 gcc-descr r15-932-g3a873c0a7bc818 power9 BE Linux 6.7.12-powerpc64 ppc64 GNU Make 4.3 DejaGnu: DejaGnu version 1.6.3 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 03:14:26 UTC 2024 (revision r15-932-g3a873c0a7b) Native configuration is powerpc64-unknown-linux-gnu === g++ tests === Running target unix/-m32 FAIL: c-c++-common/torture/strub-run3.c -O0 execution test === g++ Summary for unix/-m32 === # of expected passes251911 # of unexpected failures1 # of expected failures 2618 # of unsupported tests 11565 Running target unix/-m64 === g++ Summary for unix/-m64 === # of expected passes260933 # of expected failures 2623 # of unsupported tests 11738 === g++ Summary === # of expected passes512844 # of unexpected failures1 # of expected failures 5241 # of unsupported tests 23303 /home/gccbuild/build/nightly/build-gcc-trunk/gcc/xg++ version 15.0.0 20240531 (experimental) [master r15-932-g3a873c0a7b] (GCC) === gcc tests === Running target unix/-m32 XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto
[to-be-committed] [RISC-V] Use Zbkb for general 64 bit constants when profitable
Basically this adds the ability to generate two independent constants during synthesis, then bring them together with a pack instruction. Thus we never need to go out to the constant pool when zbkb is enabled. The worst sequence we ever generate is lui+addi+lui+addi+pack Obviously if either half can be synthesized with just a lui or just an addi, then we'll DTRT automagically. So for example: unsigned long foo_0xf857f2def857f2de(void) { return 0x14252800; } The high and low halves are just a lui. So the final synthesis is: li a5,671088640# 15[c=4 l=4] *movdi_64bit/1 li a0,337969152# 16[c=4 l=4] *movdi_64bit/1 packa0,a5,a0# 17[c=12 l=4] riscv_xpack_di_si_2 On the implementation side, I think the bits I've put in here likely can be used to handle the repeating constant case for !zbkb. I think it likely could be used to help capture cases where the upper half can be derived from the lower half (say by turning a bit on or off, shifting or something similar). The key in both of these cases is we need a temporary register holding an intermediate value. Ventana's internal tester enables zbkb, but I don't think any of the other testers currently exercise zbkb. We'll probably want to change that at some point, but I don't think it's super-critical yet. While I can envision a few more cases where we could improve constant synthesis, No immediate plans to work in this space, but if someone is interested, some thoughts are recorded here: https://wiki.riseproject.dev/display/HOME/CT_00_031+--+Additional+Constant+Synthesis+Improvements Jeffgcc/ * config/riscv/riscv.cc (riscv_integer_op): Add new field. (riscv_build_integer_1): Initialize the new field. (riscv_built_integer): Recognize more cases where Zbkb's pack instruction is profitable. (riscv_move_integer): Loop over all the codes. If requested, save the current constant into a temporary. Generate pack for more cases using the saved constant. diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 91fefacee80..10af38a5a81 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -250,6 +250,7 @@ struct riscv_arg_info { and each VALUE[i] is a constant integer. CODE[0] is undefined. */ struct riscv_integer_op { bool use_uw; + bool save_temporary; enum rtx_code code; unsigned HOST_WIDE_INT value; }; @@ -759,6 +760,7 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], codes[0].code = UNKNOWN; codes[0].value = value; codes[0].use_uw = false; + codes[0].save_temporary = false; return 1; } if (TARGET_ZBS && SINGLE_BIT_MASK_OPERAND (value)) @@ -767,6 +769,7 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], codes[0].code = UNKNOWN; codes[0].value = value; codes[0].use_uw = false; + codes[0].save_temporary = false; /* RISC-V sign-extends all 32bit values that live in a 32bit register. To avoid paradoxes, we thus need to use the @@ -796,6 +799,7 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], alt_codes[alt_cost-1].code = PLUS; alt_codes[alt_cost-1].value = low_part; alt_codes[alt_cost-1].use_uw = false; + alt_codes[alt_cost-1].save_temporary = false; memcpy (codes, alt_codes, sizeof (alt_codes)); cost = alt_cost; } @@ -810,6 +814,7 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], alt_codes[alt_cost-1].code = XOR; alt_codes[alt_cost-1].value = low_part; alt_codes[alt_cost-1].use_uw = false; + alt_codes[alt_cost-1].save_temporary = false; memcpy (codes, alt_codes, sizeof (alt_codes)); cost = alt_cost; } @@ -852,6 +857,7 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], alt_codes[alt_cost-1].code = ASHIFT; alt_codes[alt_cost-1].value = shift; alt_codes[alt_cost-1].use_uw = use_uw; + alt_codes[alt_cost-1].save_temporary = false; memcpy (codes, alt_codes, sizeof (alt_codes)); cost = alt_cost; } @@ -873,9 +879,11 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS], codes[0].value = (((unsigned HOST_WIDE_INT) value >> trailing_ones) | (value << (64 - trailing_ones))); codes[0].use_uw = false; + codes[0].save_temporary = false; codes[1].code = ROTATERT; codes[1].value = 64 - trailing_ones; codes[1].use_uw = false; + codes[1].save_temporary = false; cost = 2; } /* Handle the case where the 11 bit range of zero bits wraps around. */ @@ -888,9 +896,11 @@
Results for 12.3.1 20240531 [remotes/origin/releases/gcc-12 r12-10481-gb5291b7034] (GCC) testsuite on powerpc64le-unknown-linux-gnu
git commit g:b5291b7034513ac6ac78289405f40853b7d51393 gcc-descr r12-10481-gb5291b7034513a power8 Linux 5.4.0-182-generic ppc64le GNU Make 4.2.1 DejaGnu: DejaGnu version 1.6.2 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 02:30:19 UTC 2024 (revision r12-10481-gb5291b7034) Native configuration is powerpc64le-unknown-linux-gnu === gcc tests === Running target unix XPASS: gcc.dg/Wtrampolines.c standard descriptors (test for warnings, line 29) XPASS: gcc.dg/uninit-pred-7_a.c bogus warning (test for bogus messages, line 26) XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/ipa-sra-1.c -O0 line 15 k == 3 XPASS: gcc.dg/guality/ipa-sra-1.c -O1 -DPREVENT_OPTIMIZATION line 15 k == 3 XPASS: gcc.dg/guality/ipa-sra-1.c -Og -DPREVENT_OPTIMIZATION line 15 k == 3 FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 y == 2 FAIL: gcc.dg/guality/pr36728-1.c -O3 -g -DPREVENT_OPTIMIZATION line 18 y == 2 FAIL: gcc.dg/guality/pr36728-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr36728-3.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i == 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i1 == 2 * 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i2 == 3 * 37 XPASS: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 j == 28 + 37 FAIL: gcc.dg/guality/pr41447-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr43051-1.c -O1 -DPREVENT_OPTIMIZATION line 35 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O1 -DPREVENT_OPTIMIZATION line 40 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -DPREVENT_OPTIMIZATION line 35 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -DPREVENT_OPTIMIZATION line 40 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 35 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 40 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 35 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 40 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 35 v == 1 FAIL: gcc.dg/guality/pr43051-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 40 v == 1
[Bug sanitizer/115127] [12/13/14/15 Regression] passing zero to __builtin_ctz() check missing
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115127 --- Comment #4 from Bi6c --- (In reply to Andrew Pinski from comment #1) > Can you attach the preprocessed source? Yes. I attached the preprocessed source file.
[PATCHv2, rs6000] Optimize vector construction with two vector doubleword loads [PR103568]
Hi, This patch optimizes vector construction with two vector doubleword loads. It generates an optimal insn sequence as "xxlor" has lower latency than "mtvsrdd" on Power10. Compared with previous version, the main change is to use "isa" attribute to guard "lxsd" and "lxsdx". https://gcc.gnu.org/pipermail/gcc-patches/2024-May/653103.html Bootstrapped and tested on powerpc64-linux BE and LE with no regressions. OK for the trunk? Thanks Gui Haochen ChangeLog rs6000: Optimize vector construction with two vector doubleword loads When constructing a vector by two doublewords from memory, originally it does ld 10,0(3) ld 9,0(4) mtvsrdd 34,9,10 An optimal sequence on Power10 should be lxsd 0,0(4) lxvrdx 1,0,3 xxlor 34,1,32 This patch does this optimization by insn combine and split. gcc/ PR target/103568 * config/rs6000/vsx.md (vsx_ld_lowpart_zero_): New insn pattern. (vsx_ld_highpart_zero_): New insn pattern. (vsx_concat_mem_): New insn_and_split pattern. gcc/testsuite/ PR target/103568 * gcc.target/powerpc/pr103568.c: New test. patch.diff diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index f135fa079bd..f9a2a260e89 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1395,6 +1395,27 @@ (define_insn "vsx_ld_elemrev_v2di" "lxvd2x %x0,%y1" [(set_attr "type" "vecload")]) +(define_insn "vsx_ld_lowpart_zero_" + [(set (match_operand:VSX_D 0 "vsx_register_operand" "=v,wa") + (vec_concat:VSX_D + (match_operand: 1 "memory_operand" "wY,Z") + (match_operand: 2 "zero_constant" "j,j")))] + "" + "@ + lxsd %0,%1 + lxsdx %x0,%y1" + [(set_attr "type" "vecload,vecload") + (set_attr "isa" "p9v,p7v")]) + +(define_insn "vsx_ld_highpart_zero_" + [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa") + (vec_concat:VSX_D + (match_operand: 1 "zero_constant" "j") + (match_operand: 2 "memory_operand" "Z")))] + "TARGET_POWER10" + "lxvrdx %x0,%y2" + [(set_attr "type" "vecload")]) + (define_insn "vsx_ld_elemrev_v1ti" [(set (match_operand:V1TI 0 "vsx_register_operand" "=wa") (vec_select:V1TI @@ -3063,6 +3084,26 @@ (define_insn "vsx_concat_" } [(set_attr "type" "vecperm,vecmove")]) +(define_insn_and_split "vsx_concat_mem_" + [(set (match_operand:VSX_D 0 "vsx_register_operand" "=v,wa") + (vec_concat:VSX_D + (match_operand: 1 "memory_operand" "wY,Z") + (match_operand: 2 "memory_operand" "Z,Z")))] + "TARGET_POWER10 && can_create_pseudo_p ()" + "#" + "&& 1" + [(const_int 0)] +{ + rtx tmp1 = gen_reg_rtx (mode); + rtx tmp2 = gen_reg_rtx (mode); + emit_insn (gen_vsx_ld_highpart_zero_ (tmp1, CONST0_RTX (mode), + operands[1])); + emit_insn (gen_vsx_ld_lowpart_zero_ (tmp2, operands[2], +CONST0_RTX (mode))); + emit_insn (gen_ior3 (operands[0], tmp1, tmp2)); + DONE; +}) + ;; Combiner patterns to allow creating XXPERMDI's to access either double ;; word element in a vector register. (define_insn "*vsx_concat__1" diff --git a/gcc/testsuite/gcc.target/powerpc/pr103568.c b/gcc/testsuite/gcc.target/powerpc/pr103568.c new file mode 100644 index 000..b2a06fb2162 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr103568.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mdejagnu-cpu=power10 -O2" } */ + +vector double test (double *a, double *b) +{ + return (vector double) {*a, *b}; +} + +vector long long test1 (long long *a, long long *b) +{ + return (vector long long) {*a, *b}; +} + +/* { dg-final { scan-assembler-times {\mlxsd} 2 } } */ +/* { dg-final { scan-assembler-times {\mlxvrdx\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mxxlor\M} 2 } } */ +
[Bug target/113719] [13/14/15 regression] g++.target/i386/pr103696.C FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113719 Hongyu Wang changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #10 from Hongyu Wang --- Fixed on GCC13/14/15.
[gcc r13-8811] i386: Fix ix86_option override after change [PR 113719]
https://gcc.gnu.org/g:173f8763a66622f2a70ad66f60573fcff7d6b49e commit r13-8811-g173f8763a66622f2a70ad66f60573fcff7d6b49e Author: Hongyu Wang Date: Wed May 15 11:24:34 2024 +0800 i386: Fix ix86_option override after change [PR 113719] In ix86_override_options_after_change, calls to ix86_default_align and ix86_recompute_optlev_based_flags will cause mismatched target opt_set when doing cl_optimization_restore. Move them back to ix86_option_override_internal to solve the issue. gcc/ChangeLog: PR target/113719 * config/i386/i386-options.cc (ix86_override_options_after_change): Remove call to ix86_default_align and ix86_recompute_optlev_based_flags. (ix86_option_override_internal): Call ix86_default_align and ix86_recompute_optlev_based_flags. (cherry picked from commit 499d00127d39ba894b0f7216d73660b380bdc325) Diff: --- gcc/config/i386/i386-options.cc | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index c1229475138..cdbe2dc6201 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -1875,11 +1875,6 @@ ix86_recompute_optlev_based_flags (struct gcc_options *opts, void ix86_override_options_after_change (void) { - /* Default align_* from the processor table. */ - ix86_default_align (_options); - - ix86_recompute_optlev_based_flags (_options, _options_set); - /* Disable unrolling small loops when there's explicit -f{,no}unroll-loop. */ if ((OPTION_SET_P (flag_unroll_loops)) @@ -2420,6 +2415,8 @@ ix86_option_override_internal (bool main_args_p, set_ix86_tune_features (opts, ix86_tune, opts->x_ix86_dump_tunes); + ix86_recompute_optlev_based_flags (opts, opts_set); + ix86_override_options_after_change (); ix86_tune_cost = processor_cost_table[ix86_tune]; @@ -2451,6 +2448,9 @@ ix86_option_override_internal (bool main_args_p, || TARGET_64BIT_P (opts->x_ix86_isa_flags)) opts->x_ix86_regparm = REGPARM_MAX; + /* Default align_* from the processor table. */ + ix86_default_align (_options); + /* Provide default for -mbranch-cost= value. */ SET_OPTION_IF_UNSET (opts, opts_set, ix86_branch_cost, ix86_tune_cost->branch_cost);
[Bug target/113719] [13/14/15 regression] g++.target/i386/pr103696.C FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113719 --- Comment #9 from GCC Commits --- The releases/gcc-13 branch has been updated by Hongyu Wang : https://gcc.gnu.org/g:173f8763a66622f2a70ad66f60573fcff7d6b49e commit r13-8811-g173f8763a66622f2a70ad66f60573fcff7d6b49e Author: Hongyu Wang Date: Wed May 15 11:24:34 2024 +0800 i386: Fix ix86_option override after change [PR 113719] In ix86_override_options_after_change, calls to ix86_default_align and ix86_recompute_optlev_based_flags will cause mismatched target opt_set when doing cl_optimization_restore. Move them back to ix86_option_override_internal to solve the issue. gcc/ChangeLog: PR target/113719 * config/i386/i386-options.cc (ix86_override_options_after_change): Remove call to ix86_default_align and ix86_recompute_optlev_based_flags. (ix86_option_override_internal): Call ix86_default_align and ix86_recompute_optlev_based_flags. (cherry picked from commit 499d00127d39ba894b0f7216d73660b380bdc325)
[gcc r14-10262] i386: Fix ix86_option override after change [PR 113719]
https://gcc.gnu.org/g:cd161b335c2723d0dce1cab00ad216b423ec2767 commit r14-10262-gcd161b335c2723d0dce1cab00ad216b423ec2767 Author: Hongyu Wang Date: Wed May 15 11:24:34 2024 +0800 i386: Fix ix86_option override after change [PR 113719] In ix86_override_options_after_change, calls to ix86_default_align and ix86_recompute_optlev_based_flags will cause mismatched target opt_set when doing cl_optimization_restore. Move them back to ix86_option_override_internal to solve the issue. gcc/ChangeLog: PR target/113719 * config/i386/i386-options.cc (ix86_override_options_after_change): Remove call to ix86_default_align and ix86_recompute_optlev_based_flags. (ix86_option_override_internal): Call ix86_default_align and ix86_recompute_optlev_based_flags. (cherry picked from commit 499d00127d39ba894b0f7216d73660b380bdc325) Diff: --- gcc/config/i386/i386-options.cc | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index ac48b5c61c4..d97464f2c74 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -1930,11 +1930,6 @@ ix86_recompute_optlev_based_flags (struct gcc_options *opts, void ix86_override_options_after_change (void) { - /* Default align_* from the processor table. */ - ix86_default_align (_options); - - ix86_recompute_optlev_based_flags (_options, _options_set); - /* Disable unrolling small loops when there's explicit -f{,no}unroll-loop. */ if ((OPTION_SET_P (flag_unroll_loops)) @@ -2530,6 +2525,8 @@ ix86_option_override_internal (bool main_args_p, set_ix86_tune_features (opts, ix86_tune, opts->x_ix86_dump_tunes); + ix86_recompute_optlev_based_flags (opts, opts_set); + ix86_override_options_after_change (); ix86_tune_cost = processor_cost_table[ix86_tune]; @@ -2565,6 +2562,9 @@ ix86_option_override_internal (bool main_args_p, || TARGET_64BIT_P (opts->x_ix86_isa_flags)) opts->x_ix86_regparm = REGPARM_MAX; + /* Default align_* from the processor table. */ + ix86_default_align (_options); + /* Provide default for -mbranch-cost= value. */ SET_OPTION_IF_UNSET (opts, opts_set, ix86_branch_cost, ix86_tune_cost->branch_cost);
[Bug target/113719] [13/14/15 regression] g++.target/i386/pr103696.C FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113719 --- Comment #8 from GCC Commits --- The releases/gcc-14 branch has been updated by Hongyu Wang : https://gcc.gnu.org/g:cd161b335c2723d0dce1cab00ad216b423ec2767 commit r14-10262-gcd161b335c2723d0dce1cab00ad216b423ec2767 Author: Hongyu Wang Date: Wed May 15 11:24:34 2024 +0800 i386: Fix ix86_option override after change [PR 113719] In ix86_override_options_after_change, calls to ix86_default_align and ix86_recompute_optlev_based_flags will cause mismatched target opt_set when doing cl_optimization_restore. Move them back to ix86_option_override_internal to solve the issue. gcc/ChangeLog: PR target/113719 * config/i386/i386-options.cc (ix86_override_options_after_change): Remove call to ix86_default_align and ix86_recompute_optlev_based_flags. (ix86_option_override_internal): Call ix86_default_align and ix86_recompute_optlev_based_flags. (cherry picked from commit 499d00127d39ba894b0f7216d73660b380bdc325)
Question about generating vpmovzxbd instruction without using the interfaces in immintrin.h
Hi, I've recently been trying to hand-write code to trigger automatic vectorization optimizations in GCC on Intel x86 machines (without using the interfaces in immintrin.h), but I'm running into a problem where I can't seem to get the concise `vpmovzxbd` or similar instructions. My requirement is to convert 8 `uint8_t` elements to `int32_t` type and print the output. If I use the interface (_mm256_cvtepu8_epi32) in immintrin.h, the code is as follows: int immintrin () { int size = 1, offset = 3; uint8_t* a = malloc(sizeof(char) * size); __v8si b = (__v8si)_mm256_cvtepu8_epi32(*(__m128i *)(a + offset)); for (int i = 0; i < 8; i++) { printf("%d\n", b[i]); } } After compiling with -mavx2 -O3, you can get concise and efficient instructions. (You can see it here: https://godbolt.org/z/8ojzdav47) But if I do not use this interface and instead use a for-loop or the `__builtin_convertvector` interface provided by GCC, I cannot achieve the above effect. The code is as follows: typedef uint8_t v8qiu __attribute__ ((__vector_size__ (8))); int forloop () { int size = 1, offset = 3; uint8_t* a = malloc(sizeof(char) * size); v8qiu av = *(v8qiu *)(a + offset); __v8si b = {}; for (int i = 0; i < 8; i++) { b[i] = (a + offset)[i]; } for (int i = 0; i < 8; i++) { printf("%d\n", b[i]); } } int builtin_cvt () { int size = 1, offset = 3; uint8_t* a = malloc(sizeof(char) * size); v8qiu av = *(v8qiu *)(a + offset); __v8si b = __builtin_convertvector(av, __v8si); for (int i = 0; i < 8; i++) { printf("%d\n", b[i]); } } The instructions generated by both functions are redundant and complex, and are quite difficult to read compared to calling `_mm256_cvtepu8_epi32` directly. (You can see it here as well: https://godbolt.org/z/8ojzdav47) What I want to ask is: How should I write the source code to get assembly instructions similar to directly calling _mm256_cvtepu8_epi32? Or would it be easier if I modified the GIMPLE directly? But it seems that there is no relevant expression or interface directly corresponding to `vpmovzxbd` in GIMPLE. Thanks Hanke Zhang
Results for 12.3.1 20240531 [remotes/origin/releases/gcc-12 r12-10481-gb5291b7034] (GCC) testsuite on powerpc64-unknown-linux-gnu
git commit g:b5291b7034513ac6ac78289405f40853b7d51393 gcc-descr r12-10481-gb5291b7034513a power9 BE Linux 6.7.12-powerpc64 ppc64 GNU Make 4.3 DejaGnu: DejaGnu version 1.6.3 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 01:51:50 UTC 2024 (revision r12-10481-gb5291b7034) Native configuration is powerpc64-unknown-linux-gnu === g++ tests === Running target unix/-m32 === g++ Summary for unix/-m32 === # of expected passes219509 # of expected failures 1922 # of unsupported tests 10361 Running target unix/-m64 FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array + 3, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array - 1, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 36) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array + 3, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array - 1, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 36) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O0 execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O1 execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O3 -g execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -Os execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test === g++ Summary for unix/-m64 === # of expected passes228212 # of unexpected failures21 # of expected failures 1930 # of unsupported tests 10545 === g++ Summary === # of expected passes447721 # of unexpected failures21 # of expected failures 3852 # of unsupported tests 20906 /home/gccbuild/build/nightly/build-gcc-12/gcc/xg++ version 12.3.1 20240531 [remotes/origin/releases/gcc-12 r12-10481-gb5291b7034] (GCC) === gcc tests === Running target unix/-m32 FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O0 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O1 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -Os (test for excess errors) FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) XPASS: gcc.dg/uninit-pred-7_a.c bogus warning (test for bogus messages, line 26) FAIL: gcc.dg/torture/pr52451.c -O0 execution test FAIL: gcc.dg/torture/pr52451.c -O1 execution test FAIL: gcc.dg/torture/pr52451.c -O2 execution test FAIL: gcc.dg/torture/pr52451.c -O3 -g execution test FAIL: gcc.dg/torture/pr52451.c -Os execution test FAIL: gcc.dg/torture/pr52451.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.dg/torture/pr52451.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.dg/torture/pr91323.c -O0 execution test FAIL: gcc.dg/torture/pr91323.c -O1 execution test FAIL: gcc.dg/torture/pr91323.c -O2 execution test FAIL: gcc.dg/torture/pr91323.c -O3 -g execution test FAIL: gcc.dg/torture/pr91323.c -Os execution test FAIL: gcc.dg/torture/pr91323.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.dg/torture/pr91323.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test XPASS: gcc.dg/vect/slp-24-big-array.c -flto -ffat-lto-objects
Results for 15.0.0 20240531 (experimental) [master r15-932-g3a873c0a7bc] (GCC) testsuite on i686-pc-linux-gnu
LAST_UPDATED: Fri May 31 01:10:07 UTC 2024 (revision r15-932-g3a873c0a7bc) Native configuration is i686-pc-linux-gnu === gcc tests === Running target unix UNRESOLVED: gcc.c-torture/compile/2009-1.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-1.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-1.c -Os UNRESOLVED: gcc.c-torture/compile/2009-2.c -O0 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O1 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/2009-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/2009-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/2009-2.c -Os UNRESOLVED: gcc.c-torture/compile/981001-2.c -O0 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O1 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/981001-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/981001-2.c -O3 -g UNRESOLVED: gcc.c-torture/compile/981001-2.c -Os UNRESOLVED: gcc.c-torture/compile/pr61159.c -O0 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O1 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/compile/pr61159.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/compile/pr61159.c -O3 -g UNRESOLVED: gcc.c-torture/compile/pr61159.c -Os UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O0 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O1 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects UNRESOLVED: gcc.c-torture/execute/20030125-1.c -O3 -g UNRESOLVED: gcc.c-torture/execute/20030125-1.c -Os FAIL: gcc.dg/debug/dwarf2/asm-line1.c scan-assembler is_stmt 1 FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 1\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])? discriminator 2\\n FAIL: gcc.dg/debug/dwarf2/discriminator.c scan-assembler loc [0-9] 11 [0-9]( is_stmt [0-9])?\\n UNRESOLVED: c-c++-common/Waddress-5.c -Wc++-compat UNRESOLVED: gcc.dg/Walways-true-2.c FAIL: gcc.dg/Wstringop-overflow-14.c (test for excess errors) FAIL: gcc.dg/Wstringop-overflow-14.c pr102706 (test for warnings, line 40) UNRESOLVED: gcc.dg/attr-copy-6.c UNRESOLVED: gcc.dg/attr-weak-hidden-1.c UNRESOLVED: gcc.dg/attr-weak-hidden-1a.c UNRESOLVED: gcc.dg/attr-weakref-1-darwin.c UNRESOLVED: gcc.dg/attr-weakref-1.c UNRESOLVED: gcc.dg/attr-weakref-2.c UNRESOLVED: gcc.dg/attr-weakref-3.c UNRESOLVED: gcc.dg/attr-weakref-4.c UNRESOLVED: gcc.dg/darwin-weakimport-1.c UNRESOLVED: gcc.dg/darwin-weakimport-2.c UNRESOLVED: gcc.dg/darwin-weakimport-3.c UNRESOLVED: gcc.dg/darwin-weakref-1.c UNRESOLVED: gcc.dg/pr77587.c UNRESOLVED: gcc.dg/pr77587a.c UNRESOLVED: gcc.dg/pr84739.c FAIL: gcc.dg/pr90263.c scan-assembler mempcpy FAIL: gcc.dg/pr96573.c scan-tree-dump optimized "__builtin_bswap|VEC_PERM_EXPR[^\\n\\r]*7, 6, 5, 4, 3, 2, 1, 0" UNRESOLVED: gcc.dg/visibility-21.c FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL: gcc.dg/visibility-d.c scan-not-hidden FAIL:
Results for 15.0.0 20240531 (experimental) [master r15-932-g3a873c0a7bc] (GCC) testsuite on x86_64-pc-linux-gnu
LAST_UPDATED: Fri May 31 01:10:09 UTC 2024 (revision r15-932-g3a873c0a7bc) Native configuration is x86_64-pc-linux-gnu === gcc tests === Running target unix XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O3 -g -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 14 y == 2 FAIL: gcc.dg/guality/pr36728-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects
Regressions on master at commit r15-932 vs commit r15-930 on Linux/x86_64
Regressions on master at commit r15-932 vs commit r15-930 on Linux/x86_64 New failures: New passes: FAIL: gcc.dg/lto/save-temps c_lto_save-temps_0.o-c_lto_save-temps_0.o link, -O -flto -save-temps
Results for 15.0.0 20240531 (experimental) [remotes/origin/HEAD r15-931-g0ab643555c] (GCC) testsuite on powerpc64le-unknown-linux-gnu
git commit g:0ab643555c24eddfd692605ca185a04527993a56 gcc-descr r15-931-g0ab643555c24ed power8 Linux 5.4.0-182-generic ppc64le GNU Make 4.2.1 DejaGnu: DejaGnu version 1.6.2 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 00:24:49 UTC 2024 (revision r15-931-g0ab643555c) Native configuration is powerpc64le-unknown-linux-gnu === gcc tests === Running target unix XPASS: gcc.dg/Wtrampolines.c standard descriptors (test for warnings, line 32) XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/inline-params-2.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 *x == (char) 25 FAIL: gcc.dg/guality/pr36728-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr36728-3.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i == 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i1 == 2 * 37 FAIL: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 i2 == 3 * 37 XPASS: gcc.dg/guality/pr41353-1.c -Og -DPREVENT_OPTIMIZATION line 28 j == 28 + 37 FAIL: gcc.dg/guality/pr41447-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41447-1.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr41616-1.c -O3 -g -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/pr54200.c -O1 -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O2 -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -O3 -g -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54200.c -Os -DPREVENT_OPTIMIZATION line 20 z == 3 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 y == 25 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 z == 6 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 23 y == 117 FAIL: gcc.dg/guality/pr54519-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 23 z == 8 FAIL: gcc.dg/guality/pr54519-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 17 y == 25 FAIL:
Re: Reverted recent patches to resource.cc
> Date: Wed, 29 May 2024 21:23:58 -0600 > Cc: gcc-patches@gcc.gnu.org > I don't bother with qemu.exp at all. I've set up binfmt handlers so > that I can execute foreign binaries. > > So given a root filesystem, I can chroot into it and do whatever I need. > As far as dejagnu is concerned it looks like the native system. Interesting. In a Docker setup (or similar container)? If so, care to share the Dockerfile (or equivalent)? A quick web search shows similar attempts, but I found nothing "turn-key ready" that enables bootstrapping. I'll try to cook up something, likely Debian-based...later this decade, aiming for suitability in contrib/. brgds, H-P ps. my hyperbolic time guesstimates somehow still expire too soon!
Results of testsuite (branch: master; revision: r15-929; build config: lto,O3,checking=all; languages: all; tasks: 16) on x86_64-linux-gnu.
LAST_UPDATED: Thu May 30 19:48:10 UTC 2024 (revision r15-929-g46d931b3dd3) Native configuration is x86_64-pc-linux-gnu === gcc tests === Running target unix FAIL: gcc.dg/rtl/x86_64/pro_and_epilogue.c (internal compiler error: in df_scan_verify, at df-scan.cc:4233) FAIL: gcc.dg/rtl/x86_64/pro_and_epilogue.c (test for excess errors) FAIL: gcc.dg/rtl/x86_64/pro_and_epilogue.c scan-rtl-dump-times pro_and_epilogue "NOTE_INSN_PROLOGUE_END" 1 FAIL: gcc.dg/rtl/x86_64/pro_and_epilogue.c scan-rtl-dump-times pro_and_epilogue "simple_return" 2 FAIL: gcc.target/i386/apx-ndd-tls-1b.c scan-assembler-times addq[ \\t]+%r[a-z0-9]+, a@gottpoff(%rip), %r[a-z0-9]+ 1 FAIL: gcc.target/i386/pr101950-2.c scan-assembler-times \\txor[ql]\\t 2 === gcc Summary === # of expected passes199229 # of unexpected failures6 # of expected failures 1471 # of unsupported tests 3131 /home/toon/scratch/bld1697903/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === gdc tests === Running target unix FAIL: gdc.dg/attr_module.d(test for warnings, line 12) FAIL: gdc.dg/attr_module.d(test for warnings, line 18) FAIL: gdc.dg/attr_module.d(test for warnings, line 24) FAIL: gdc.dg/attr_module.d(test for warnings, line 36) FAIL: gdc.dg/attr_module.d (test for excess errors) FAIL: gdc.dg/gdc231.d (test for excess errors) FAIL: gdc.dg/gdc253a.d (test for excess errors) FAIL: gdc.dg/gdc27.d (test for excess errors) FAIL: gdc.dg/pr108050.d (test for excess errors) FAIL: gdc.test/compilable/test16348.d output-exists test16348.s FAIL: gdc.test/compilable/test17541.d output-exists test17541.s FAIL: gdc.test/fail_compilation/diag4479.d output-exists-not diag4479.o FAIL: gdc.test/fail_compilation/fail11453a.d output-exists-not fail11453a.o FAIL: gdc.test/fail_compilation/fail11453b.d output-exists-not fail11453b.o FAIL: gdc.test/fail_compilation/fail18938.d output-exists-not fail18938.o FAIL: gdc.test/fail_compilation/fail19911b.d output-exists-not fail19911b.o FAIL: gdc.test/fail_compilation/fail23109.d output-exists-not fail23109.o FAIL: gdc.test/fail_compilation/ice10598.d output-exists-not ice10598.o FAIL: gdc.test/fail_compilation/ice11136.d output-exists-not ice11136.o FAIL: gdc.test/fail_compilation/ice14116.d output-exists-not ice14116.o FAIL: gdc.test/fail_compilation/no_Throwable.d output-exists-not no_Throwable.o FAIL: gdc.test/fail_compilation/no_TypeInfo.d output-exists-not no_TypeInfo.o FAIL: gdc.test/fail_compilation/verifyhookexist.d output-exists-not verifyhookexist.o === gdc Summary === # of expected passes13841 # of unexpected failures23 # of unsupported tests 130 /home/toon/scratch/bld1697903/gcc/gdc version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === gfortran tests === Running target unix === gfortran Summary === # of expected passes70238 # of expected failures 273 # of unsupported tests 79 /home/toon/scratch/bld1697903/gcc/gfortran version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === g++ tests === Running target unix === g++ Summary === # of expected passes264506 # of expected failures 2758 # of unsupported tests 11429 /home/toon/scratch/bld1697903/gcc/xg++ version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === gm2 tests === Running target unix === gm2 Summary === # of expected passes14036 === go tests === Running target unix FAIL: ./index0-out.go execution, -O0 -g -fno-var-tracking-assignments === go Summary === # of expected passes8897 # of unexpected failures1 # of untested testcases 6 # of unsupported tests 27 /home/toon/scratch/bld1697903/gcc/gccgo version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === obj-c++ tests === Running target unix === obj-c++ Summary === # of expected passes1503 # of expected failures 10 # of unsupported tests 79 /home/toon/scratch/bld1697903/gcc/xg++ version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === objc tests === Running target unix === objc Summary === # of expected passes2840 # of expected failures 6 # of unsupported tests 70 /home/toon/scratch/bld1697903/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === rust tests === Running target unix === rust Summary === # of expected passes8402 # of expected failures 69 #
Results for 15.0.0 20240531 (experimental) [master r15-931-g0ab643555c] (GCC) testsuite on powerpc64-unknown-linux-gnu
git commit g:0ab643555c24eddfd692605ca185a04527993a56 gcc-descr r15-931-g0ab643555c24ed power9 BE Linux 6.7.12-powerpc64 ppc64 GNU Make 4.3 DejaGnu: DejaGnu version 1.6.3 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Fri May 31 00:19:31 UTC 2024 (revision r15-931-g0ab643555c) Native configuration is powerpc64-unknown-linux-gnu === g++ tests === Running target unix/-m32 FAIL: c-c++-common/torture/strub-run3.c -O0 execution test === g++ Summary for unix/-m32 === # of expected passes251911 # of unexpected failures1 # of expected failures 2618 # of unsupported tests 11565 Running target unix/-m64 === g++ Summary for unix/-m64 === # of expected passes260933 # of expected failures 2623 # of unsupported tests 11738 === g++ Summary === # of expected passes512844 # of unexpected failures1 # of expected failures 5241 # of unsupported tests 23303 /home/gccbuild/build/nightly/build-gcc-trunk/gcc/xg++ version 15.0.0 20240531 (experimental) [master r15-931-g0ab643555c] (GCC) === gcc tests === Running target unix/-m32 XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto
Results for 14.1.1 20240529 (GCC) testsuite on hppa-unknown-linux-gnu
=== acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is hppa-unknown-linux-gnu === g++ tests === Running target unix FAIL: g++.dg/guality/pr55665.C -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects line 23 p == 40 FAIL: g++.dg/guality/redeclaration1.C -O1 line 15 i == 42 FAIL: g++.dg/guality/redeclaration1.C -O2 line 15 i == 42 FAIL: g++.dg/guality/redeclaration1.C -O3 -g line 15 i == 42 FAIL: g++.dg/guality/redeclaration1.C -Os line 15 i == 42 FAIL: g++.dg/guality/redeclaration1.C -Og line 15 i == 42 === g++ Summary === # of expected passes249246 # of unexpected failures6 # of expected failures 2619 # of unsupported tests 11625 /home/dave/gnu/gcc/objdir/gcc/xg++ version 14.1.1 20240529 (GCC) === gcc tests === Running target unix FAIL: gcc.dg/cpp/_Pragma3.c (test for excess errors) XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/ipa-sra-1.c -O2 -DPREVENT_OPTIMIZATION line 31 k == 3 FAIL: gcc.dg/guality/ipa-sra-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 31 k == 3 FAIL: gcc.dg/guality/ipa-sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 31 k == 3 FAIL: gcc.dg/guality/ipa-sra-1.c -O3 -g -DPREVENT_OPTIMIZATION line 31 k == 3 FAIL: gcc.dg/guality/ipa-sra-1.c -Os -DPREVENT_OPTIMIZATION line 31 k == 3 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/nrv-1.c -O2 -DPREVENT_OPTIMIZATION line 20 a2.i[0] == 42 FAIL: gcc.dg/guality/nrv-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 a2.i[0] == 42 FAIL: gcc.dg/guality/nrv-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 a2.i[0] == 42 FAIL: gcc.dg/guality/nrv-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 a2.i[0] == 42 FAIL: gcc.dg/guality/nrv-1.c -Os -DPREVENT_OPTIMIZATION line 20 a2.i[0] == 42 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O1 -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O2 -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 18 arg7 == 30 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-1.c -O2 -flto
RE: [PATCH] aarch64: Add vector floating point extend patterns [PR113880, PR113869]
> Pengxuan Zheng writes: > > This patch improves vectorization of certain floating point widening > > operations for the aarch64 target by adding vector floating point > > extend patterns for > > V2SF->V2DF and V4HF->V4SF conversions. > > > > PR target/113880 > > PR target/113869 > > > > gcc/ChangeLog: > > > > * config/aarch64/aarch64-simd.md (extend2): New > expand. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.target/aarch64/extend-vec.c: New test. > > > > Signed-off-by: Pengxuan Zheng > > Thanks for doing this. Could we instead rename > aarch64_float_extend_lo_ to extend2 and use > something similar to: > > --- > /* The builtins below should be expanded through the standard optabs >CODE_FOR_[u]avg3_[floor,ceil]. However the mapping scheme in >aarch64-simd-builtins.def does not easily allow us to have a pre-mode >("uavg") and post-mode string ("_ceil") in the CODE_FOR_* construction. >So the builtins use a name that is natural for AArch64 instructions >e.g. "aarch64_srhadd" and we re-map these to the optab-related >CODE_FOR_ here. */ > #undef VAR1 > #define VAR1(F,T1,T2,I,M) \ > constexpr insn_code CODE_FOR_aarch64_##F##M = > CODE_FOR_##T1##M##3##T2; > > BUILTIN_VDQ_BHSI (srhadd, avg, _ceil, 0) BUILTIN_VDQ_BHSI (urhadd, uavg, > _ceil, 0) BUILTIN_VDQ_BHSI (shadd, avg, _floor, 0) BUILTIN_VDQ_BHSI > (uhadd, uavg, _floor, 0) > > #undef VAR1 > --- > > (from aarch64-builtins.cc) to handle the intrinsics? The idea is to try to > avoid > adding new patterns just to satisfy the internal naming convention. Sure, Richard. Here's the updated patch https://gcc.gnu.org/pipermail/gcc-patches/2024-May/653177.html. Please let me know if I missed anything. Thanks, Pengxuan > > Richard > > > --- > > gcc/config/aarch64/aarch64-simd.md| 7 +++ > > gcc/testsuite/gcc.target/aarch64/extend-vec.c | 21 > > +++ > > 2 files changed, 28 insertions(+) > > create mode 100644 gcc/testsuite/gcc.target/aarch64/extend-vec.c > > > > diff --git a/gcc/config/aarch64/aarch64-simd.md > > b/gcc/config/aarch64/aarch64-simd.md > > index 868f4486218..8febb411d06 100644 > > --- a/gcc/config/aarch64/aarch64-simd.md > > +++ b/gcc/config/aarch64/aarch64-simd.md > > @@ -3141,6 +3141,13 @@ (define_insn > "aarch64_float_extend_lo_" > >[(set_attr "type" "neon_fp_cvt_widen_s")] > > ) > > > > +(define_expand "extend2" > > + [(set (match_operand: 0 "register_operand" "=w") > > +(float_extend: > > + (match_operand:VDF 1 "register_operand" "w")))] > > + "TARGET_SIMD" > > +) > > + > > ;; Float narrowing operations. > > > > (define_insn "aarch64_float_trunc_rodd_df" > > diff --git a/gcc/testsuite/gcc.target/aarch64/extend-vec.c > > b/gcc/testsuite/gcc.target/aarch64/extend-vec.c > > new file mode 100644 > > index 000..f6241d5 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/aarch64/extend-vec.c > > @@ -0,0 +1,21 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-O2" } */ > > + > > +/* { dg-final { scan-assembler-times {fcvtl\tv[0-9]+.2d, v[0-9]+.2s} > > +1 } } */ void f (float *__restrict a, double *__restrict b) { > > + b[0] = a[0]; > > + b[1] = a[1]; > > +} > > + > > +/* { dg-final { scan-assembler-times {fcvtl\tv[0-9]+.4s, v[0-9]+.4h} > > +1 } } */ void > > +f1 (_Float16 *__restrict a, float *__restrict b) { > > + > > + b[0] = a[0]; > > + b[1] = a[1]; > > + b[2] = a[2]; > > + b[3] = a[3]; > > +}
[PATCH v2] aarch64: Add vector floating point extend pattern [PR113880, PR113869]
This patch adds vector floating point extend pattern for V2SF->V2DF and V4HF->V4SF conversions by renaming the existing aarch64_float_extend_lo_ pattern to the standard optab one, i.e., extend2. This allows the vectorizer to vectorize certain floating point widening operations for the aarch64 target. PR target/113880 PR target/113869 gcc/ChangeLog: * config/aarch64/aarch64-builtins.cc (VAR1): Remap float_extend_lo_ builtin codes to standard optab ones. * config/aarch64/aarch64-simd.md (aarch64_float_extend_lo_): Rename to... (extend2): ... This. gcc/testsuite/ChangeLog: * gcc.target/aarch64/extend-vec.c: New test. Signed-off-by: Pengxuan Zheng --- gcc/config/aarch64/aarch64-builtins.cc| 9 gcc/config/aarch64/aarch64-simd.md| 2 +- gcc/testsuite/gcc.target/aarch64/extend-vec.c | 21 +++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/extend-vec.c diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index f8eeccb554d..25189888d17 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -534,6 +534,15 @@ BUILTIN_VDQ_BHSI (urhadd, uavg, _ceil, 0) BUILTIN_VDQ_BHSI (shadd, avg, _floor, 0) BUILTIN_VDQ_BHSI (uhadd, uavg, _floor, 0) +/* The builtins below should be expanded through the standard optabs + CODE_FOR_extend2. */ +#undef VAR1 +#define VAR1(F,T,N,M) \ + constexpr insn_code CODE_FOR_aarch64_##F##M = CODE_FOR_##T##N##M##2; + +VAR1 (float_extend_lo_, extend, v2sf, v2df) +VAR1 (float_extend_lo_, extend, v4hf, v4sf) + #undef VAR1 #define VAR1(T, N, MAP, FLAG, A) \ {#N #A, UP (A), CF##MAP (N, A), 0, TYPES_##T, FLAG_##FLAG}, diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 868f4486218..c5e2c9f00d0 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -3132,7 +3132,7 @@ DONE; } ) -(define_insn "aarch64_float_extend_lo_" +(define_insn "extend2" [(set (match_operand: 0 "register_operand" "=w") (float_extend: (match_operand:VDF 1 "register_operand" "w")))] diff --git a/gcc/testsuite/gcc.target/aarch64/extend-vec.c b/gcc/testsuite/gcc.target/aarch64/extend-vec.c new file mode 100644 index 000..f6241d5 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/extend-vec.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler-times {fcvtl\tv[0-9]+.2d, v[0-9]+.2s} 1 } } */ +void +f (float *__restrict a, double *__restrict b) +{ + b[0] = a[0]; + b[1] = a[1]; +} + +/* { dg-final { scan-assembler-times {fcvtl\tv[0-9]+.4s, v[0-9]+.4h} 1 } } */ +void +f1 (_Float16 *__restrict a, float *__restrict b) +{ + + b[0] = a[0]; + b[1] = a[1]; + b[2] = a[2]; + b[3] = a[3]; +} -- 2.17.1
Results for 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) testsuite on x86_64-pc-linux-gnu
.dg/tree-ssa/pr64910-2.c scan-assembler-times and|test 20 FAIL: gcc.dg/tree-ssa/slsr-31.c scan-tree-dump-times optimized " * 2" 1 FAIL: gcc.dg/vect/slp-perm-9.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorizing stmts using SLP" 1 FAIL: gcc.dg/vect/slp-perm-9.c scan-tree-dump-times vect "vectorizing stmts using SLP" 1 XPASS: gcc.dg/vect/vect-reduc-in-order-1.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-1.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c execution test FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512dq-pr88465.c scan-assembler-times kxnorb[ \\t] 1 FAIL: gcc.target/i386/avx512f-pr88465.c scan-assembler-times kxnorw[ \\t] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%xmm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%ymm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%xmm[0-9], *[^,]* 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%ymm[0-9], *[^,]* 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kmovb[\\t ] 4 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times korb[\\t ] 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kxorb[\\t ] 1 FAIL: gcc.target/i386/minmax-10.c scan-assembler-not cmp FAIL: gcc.target/i386/minmax-10.c scan-assembler-times test 6 FAIL: gcc.target/i386/pieces-memset-11.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-14.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-2.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-20.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-23.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-29.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-30.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-33.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-34.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-37.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-44.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-5.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pr31985.c scan-assembler-times movl 4 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-6.c scan-assembler-times (?:vinserti128|vmovdqu)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 2 FAIL: gcc.target/i386/pr97873-1.c scan-assembler pabsq FAIL: gcc.target/i386/vect-double-2.c scan-tree-dump-times vect "Vectorized loops: 1" 1 FAIL: gcc.target/i386/vect-shiftv4qi.c scan-assembler-times psrlw 5 FAIL: gcc.target/i386/xorsign.c scan-tree-dump-times vect "vectorized 2 loops" 1 === gcc Summary for unix/-m32 === # of expected passes197789 # of unexpected failures158 # of unexpected successes 30 # of expected failures 1553 # of unsupported tests 4077 === gcc Summary === # of expected passes401939 # of unexpected failures318 # of unexpected successes 50 # of expected failures 3100 # of unsupported tests 7352 /export/home/haochenj/src/gcc-regression/bld/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === gfortran tests === Running target unix === gfortran Summary for unix === # of expected passes70253 # of expected failures 273 # of unsupported tests 65 Running target unix/-m32 === gfortran Summary for unix/-m32 === # of expected passes
[Bug rtl-optimization/115297] New: [14 regression] alpha: ICE in simplify_subreg, at simplify-rtx.cc:7554 with -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115297 Bug ID: 115297 Summary: [14 regression] alpha: ICE in simplify_subreg, at simplify-rtx.cc:7554 with -O1 Product: gcc Version: 14.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: matoro_gcc_bugzilla at matoro dot tk Target Milestone: --- Target: alpha-unknown-linux-gnu Created attachment 58314 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58314=edit gdb context and complete backtrace Found this while building kernel with gcc-14. This reproduces on cross, so using that as an example. Minimized: enum { BPF_F_USER_BUILD_ID } __bpf_get_stack_size; long __bpf_get_stack_flags, bpf_get_stack___trans_tmp_2; void bpf_get_stack() { unsigned elem_size; int err = elem_size = __bpf_get_stack_flags ?: sizeof(long); if (__builtin_expect(__bpf_get_stack_size % elem_size, 0)) bpf_get_stack___trans_tmp_2 = err; } $ alpha-unknown-linux-gnu-gcc-14 -O1 -c stackmap.i during RTL pass: combine stackmap.i: In function ‘bpf_get_stack’: stackmap.i:8:1: internal compiler error: in simplify_subreg, at simplify-rtx.cc:7554 8 | } | ^ Backtrace summary (more detailed bt with locals and snippets in attachment): #0 internal_error (gmsgid=0x1033e41b0 "in %s, at %s:%d") at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/diagnostic.cc:2227 #1 0x000102ff9cac in fancy_abort (file=0x103272d20 "/var/tmp/portage/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/work/gcc-14-20240518/gcc/simplify-rtx.cc", line=7554, function=0x1032731f0 "simplify_subreg") at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/diagnostic.cc:2353 #2 0x0001017b5ea4 in simplify_context::simplify_subreg (this=0x7fff9f00, outermode=E_DImode, op=0x75448c28, innermode=E_SImode, byte=...) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/simplify-rtx.cc:7554 #3 0x0001017b8da8 in simplify_context::simplify_subreg (this=0x7fff9f00, outermode=E_DImode, op=0x75449ff0, innermode=E_SImode, byte=...) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/simplify-rtx.cc:7804 #4 0x0001017b988c in simplify_context::simplify_gen_subreg (this=0x7fff9f00, outermode=E_DImode, op=0x75449ff0, innermode=E_SImode, byte=...) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/simplify-rtx.cc:7875 #5 0x000100bb6224 in simplify_gen_subreg (outermode=E_DImode, op=0x75449ff0, innermode=E_SImode, byte=...) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/rtl.h:3552 #6 0x0001028f87dc in if_then_else_cond (x=0x75449f60, ptrue=0x7fffa528, pfalse=0x7fffa538) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:9423 #7 0x0001028f55ec in if_then_else_cond (x=0x75449f78, ptrue=0x7fffa948, pfalse=0x7fffa958) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:9286 #8 0x0001028f55ec in if_then_else_cond (x=0x75449f90, ptrue=0x7fffb148, pfalse=0x7fffb150) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:9286 #9 0x0001028bf07c in combine_simplify_rtx (x=0x75449f90, op0_mode=E_VOIDmode, in_dest=false, in_cond=false) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:5758 #10 0x0001028bc3d8 in subst (x=0x75449f90, from=0x754488c8, to=0x75451920, in_dest=false, in_cond=false, unique_copy=false) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:5619 #11 0x0001028bba88 in subst (x=0x75448cb8, from=0x754488c8, to=0x75451920, in_dest=false, in_cond=false, unique_copy=false) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:5546 #12 0x0001028babe8 in subst (x=0x754a68a0, from=0x754488c8, to=0x75451920, in_dest=false, in_cond=false, unique_copy=false) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:5480 #13 0x00010289ba0c in try_combine (i3=0x754e0540, i2=0x754e0500, i1=0x754e06c0, i0=0x0, new_direct_jump_p=0x7fffe2df, last_combined_insn=0x754e0540) at /usr/src/debug/cross-alpha-unknown-linux-gnu/gcc-14.1.1_p20240518/gcc-14-20240518/gcc/combine.cc:3349 #14 0x00010288c22c in combine_instructions (f=0x754009a0, nregs=88) at
Results for 15.0.0 20240530 (experimental) [master revision gcc-15-929-g46d931b3dd3] (GCC) testsuite on aarch64-unknown-linux-gnu
s]bfiztw[0-9]+, w[0-9]+, 11 2 FAIL: gcc.target/aarch64/pr100056.c scan-assembler-times taddtw[0-9]+, w[0-9]+, w[0-9]+, uxtbn 2 FAIL: gcc.target/aarch64/pr108840.c scan-assembler-not andtw[0-9]+, w[0-9]+, 31 FAIL: gcc.target/aarch64/pr112105.c scan-assembler-not tdupt FAIL: gcc.target/aarch64/pr112105.c scan-assembler-times (?n)tfmult.*v[0-9]+.s[0]n 2 FAIL: gcc.target/aarch64/pr99873_2.c scan-assembler-not tld4t FAIL: gcc.target/aarch64/pr99873_2.c scan-assembler-not tst4t FAIL: gcc.target/aarch64/rev16_2.c scan-assembler-times rev16tx[0-9]+ 2 FAIL: gcc.target/aarch64/vaddX_high_cost.c scan-assembler-not dupt FAIL: gcc.target/aarch64/vmul_element_cost.c scan-assembler-not dupt FAIL: gcc.target/aarch64/vmul_high_cost.c scan-assembler-not dupt FAIL: gcc.target/aarch64/vsubX_high_cost.c scan-assembler-not dupt FAIL: gcc.target/aarch64/sve/mask_struct_load_3_run.c execution test FAIL: gcc.target/aarch64/sve/pr96357.c scan-assembler tfsubrtz[0-9]+.d, p[0-7]/m, z[0-9]+.d, #1.0 FAIL: gcc.target/aarch64/sve/pr96357.c scan-assembler tmovprfxtz[0-9]+, z[0-9]+ FAIL: gcc.target/aarch64/sve/pr98119.c scan-assembler tandtx[0-9]+, x[0-9]+, #?-31n FAIL: gcc.target/aarch64/sve/pre_cond_share_1.c scan-tree-dump-times optimized ".COND_MUL" 1 XPASS: gcc.target/aarch64/sve/pre_cond_share_1.c scan-tree-dump-times optimized ".VCOND" 1 FAIL: gcc.target/aarch64/sve/pred-not-gen-1.c scan-assembler-not tbict FAIL: gcc.target/aarch64/sve/pred-not-gen-1.c scan-assembler-times tnottp[0-9]+.b, p[0-9]+/z, p[0-9]+.bn 1 FAIL: gcc.target/aarch64/sve/pred-not-gen-4.c scan-assembler-not tbict FAIL: gcc.target/aarch64/sve/pred-not-gen-4.c scan-assembler-times tnottp[0-9]+.b, p[0-9]+/z, p[0-9]+.bn 1 FAIL: gcc.target/aarch64/sve/sad_1.c scan-assembler-times tudottz[0-9]+.d, z[0-9]+.h, z[0-9]+.hn 2 FAIL: gcc.target/aarch64/sve/var_stride_2.c scan-assembler-times tubfiztx[0-9]+, x2, 10, 16n 1 FAIL: gcc.target/aarch64/sve/var_stride_2.c scan-assembler-times tubfiztx[0-9]+, x3, 10, 16n 1 FAIL: gcc.target/aarch64/sve/var_stride_4.c scan-assembler-times tsbfiztx[0-9]+, x2, 10, 32n 1 FAIL: gcc.target/aarch64/sve/var_stride_4.c scan-assembler-times tsbfiztx[0-9]+, x3, 10, 32n 1 === gcc Summary === # of expected passes339643 # of unexpected failures328 # of unexpected successes 2 # of expected failures 1763 # of unsupported tests 4203 /home/tcwg-buildslave/workspace/tcwg_gnu_1/abe/builds/destdir/x86_64-pc-linux-gnu/bin/aarch64-linux-gnu-gcc version 15.0.0 20240530 (experimental) [master revision gcc-15-929-g46d931b3dd3] (GCC) Host is x86_64-pc-linux-gnu === gfortran tests === Running target qemu FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O0 execution test FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O1 execution test FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O2 execution test FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O3 -g execution test FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -Os execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -O0 execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -O1 execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -O2 execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -O3 -g execution test FAIL: gfortran.dg/asan/pr110415-2.f90 -fsanitize=address -Os execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -O0 execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -O1 execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -O2 execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -O3 -g execution test FAIL: gfortran.dg/asan/pr110415-3.f90 -fsanitize=address -Os execution test FAIL: gfortran.dg/asan/unlimited_polymorphic_34.f90 -fsanitize=address -O0 execution test FAIL: gfortran.dg/asan/unlimited_polymorphic_34.f90 -fsanitize=address -O1 execution test FAIL: gfortran.dg/asan/unlimited_polymorphic_34.f90 -fsanitize=address -O2 execution test FAIL: gfortran.dg/asan/unlimited_polymorphic_34.f
[committed] [x86] Rename double_u with __double_u to avoid pulluting the namespace.
Committed as an obvious patch. gcc/ChangeLog: * config/i386/emmintrin.h (__double_u): Rename from double_u. (_mm_load_sd): Replace double_u with __double_u. (_mm_store_sd): Ditto. (_mm_loadh_pd): Ditto. (_mm_loadl_pd): Ditto. * config/i386/xmmintrin.h (__float_u): Rename from float_u. (_mm_load_ss): Ditto. (_mm_store_ss): Ditto. --- gcc/config/i386/emmintrin.h | 10 +- gcc/config/i386/xmmintrin.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h index fa301103daf..356ca218fcb 100644 --- a/gcc/config/i386/emmintrin.h +++ b/gcc/config/i386/emmintrin.h @@ -56,7 +56,7 @@ typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); /* Unaligned version of the same types. */ typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); typedef double __m128d_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); -typedef double double_u __attribute__ ((__may_alias__, __aligned__ (1))); +typedef double __double_u __attribute__ ((__may_alias__, __aligned__ (1))); /* Create a selector for use with the SHUFPD instruction. */ #define _MM_SHUFFLE2(fp1,fp0) \ @@ -146,7 +146,7 @@ _mm_load1_pd (double const *__P) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_load_sd (double const *__P) { - return __extension__ (__m128d) { *(double_u *)__P, 0.0 }; + return __extension__ (__m128d) { *(__double_u *)__P, 0.0 }; } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -181,7 +181,7 @@ _mm_storeu_pd (double *__P, __m128d __A) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_store_sd (double *__P, __m128d __A) { - *(double_u *)__P = ((__v2df)__A)[0] ; + *(__double_u *)__P = ((__v2df)__A)[0] ; } extern __inline double __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -974,13 +974,13 @@ _mm_unpacklo_pd (__m128d __A, __m128d __B) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_loadh_pd (__m128d __A, double const *__B) { - return __extension__ (__m128d) { ((__v2df)__A)[0], *(double_u*)__B }; + return __extension__ (__m128d) { ((__v2df)__A)[0], *(__double_u*)__B }; } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_loadl_pd (__m128d __A, double const *__B) { - return __extension__ (__m128d) { *(double_u*)__B, ((__v2df)__A)[1] }; + return __extension__ (__m128d) { *(__double_u*)__B, ((__v2df)__A)[1] }; } extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h index 87515ecb218..c90fc71331a 100644 --- a/gcc/config/i386/xmmintrin.h +++ b/gcc/config/i386/xmmintrin.h @@ -72,7 +72,7 @@ typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__)); /* Unaligned version of the same type. */ typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); -typedef float float_u __attribute__ ((__may_alias__, __aligned__ (1))); +typedef float __float_u __attribute__ ((__may_alias__, __aligned__ (1))); /* Internal data types for implementing the intrinsics. */ typedef float __v4sf __attribute__ ((__vector_size__ (16))); @@ -910,7 +910,7 @@ _mm_set_ps1 (float __F) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_load_ss (float const *__P) { - return __extension__ (__m128) (__v4sf){ *(float_u *)__P, 0.0f, 0.0f, 0.0f }; + return __extension__ (__m128) (__v4sf){ *(__float_u *)__P, 0.0f, 0.0f, 0.0f }; } /* Create a vector with all four elements equal to *P. */ @@ -966,7 +966,7 @@ _mm_setr_ps (float __Z, float __Y, float __X, float __W) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_store_ss (float *__P, __m128 __A) { - *(float_u *)__P = ((__v4sf)__A)[0]; + *(__float_u *)__P = ((__v4sf)__A)[0]; } extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -- 2.31.1
[gcc r15-932] Rename double_u with __double_u to avoid pulluting the namespace.
https://gcc.gnu.org/g:3a873c0a7bc8183de95a6103b507101a25eed413 commit r15-932-g3a873c0a7bc8183de95a6103b507101a25eed413 Author: liuhongt Date: Thu May 30 14:15:48 2024 +0800 Rename double_u with __double_u to avoid pulluting the namespace. gcc/ChangeLog: * config/i386/emmintrin.h (__double_u): Rename from double_u. (_mm_load_sd): Replace double_u with __double_u. (_mm_store_sd): Ditto. (_mm_loadh_pd): Ditto. (_mm_loadl_pd): Ditto. * config/i386/xmmintrin.h (__float_u): Rename from float_u. (_mm_load_ss): Ditto. (_mm_store_ss): Ditto. Diff: --- gcc/config/i386/emmintrin.h | 10 +- gcc/config/i386/xmmintrin.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h index fa301103daf..356ca218fcb 100644 --- a/gcc/config/i386/emmintrin.h +++ b/gcc/config/i386/emmintrin.h @@ -56,7 +56,7 @@ typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); /* Unaligned version of the same types. */ typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); typedef double __m128d_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); -typedef double double_u __attribute__ ((__may_alias__, __aligned__ (1))); +typedef double __double_u __attribute__ ((__may_alias__, __aligned__ (1))); /* Create a selector for use with the SHUFPD instruction. */ #define _MM_SHUFFLE2(fp1,fp0) \ @@ -146,7 +146,7 @@ _mm_load1_pd (double const *__P) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_load_sd (double const *__P) { - return __extension__ (__m128d) { *(double_u *)__P, 0.0 }; + return __extension__ (__m128d) { *(__double_u *)__P, 0.0 }; } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -181,7 +181,7 @@ _mm_storeu_pd (double *__P, __m128d __A) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_store_sd (double *__P, __m128d __A) { - *(double_u *)__P = ((__v2df)__A)[0] ; + *(__double_u *)__P = ((__v2df)__A)[0] ; } extern __inline double __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -974,13 +974,13 @@ _mm_unpacklo_pd (__m128d __A, __m128d __B) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_loadh_pd (__m128d __A, double const *__B) { - return __extension__ (__m128d) { ((__v2df)__A)[0], *(double_u*)__B }; + return __extension__ (__m128d) { ((__v2df)__A)[0], *(__double_u*)__B }; } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_loadl_pd (__m128d __A, double const *__B) { - return __extension__ (__m128d) { *(double_u*)__B, ((__v2df)__A)[1] }; + return __extension__ (__m128d) { *(__double_u*)__B, ((__v2df)__A)[1] }; } extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h index 87515ecb218..c90fc71331a 100644 --- a/gcc/config/i386/xmmintrin.h +++ b/gcc/config/i386/xmmintrin.h @@ -72,7 +72,7 @@ typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__)); /* Unaligned version of the same type. */ typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); -typedef float float_u __attribute__ ((__may_alias__, __aligned__ (1))); +typedef float __float_u __attribute__ ((__may_alias__, __aligned__ (1))); /* Internal data types for implementing the intrinsics. */ typedef float __v4sf __attribute__ ((__vector_size__ (16))); @@ -910,7 +910,7 @@ _mm_set_ps1 (float __F) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_load_ss (float const *__P) { - return __extension__ (__m128) (__v4sf){ *(float_u *)__P, 0.0f, 0.0f, 0.0f }; + return __extension__ (__m128) (__v4sf){ *(__float_u *)__P, 0.0f, 0.0f, 0.0f }; } /* Create a vector with all four elements equal to *P. */ @@ -966,7 +966,7 @@ _mm_setr_ps (float __Z, float __Y, float __X, float __W) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_store_ss (float *__P, __m128 __A) { - *(float_u *)__P = ((__v4sf)__A)[0]; + *(__float_u *)__P = ((__v4sf)__A)[0]; } extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__))
[PATCH v5] Match: Support more form for scalar unsigned SAT_ADD
From: Pan Li Update in v5 * Fix some doc build error. Log in v4: After we support one gassign form of the unsigned .SAT_ADD, we would like to support more forms including both the branch and branchless. There are 5 other forms of .SAT_ADD, list as below: Form 1: #define SAT_ADD_U_1(T) \ T sat_add_u_1_##T(T x, T y) \ { \ return (T)(x + y) >= x ? (x + y) : -1; \ } Form 2: #define SAT_ADD_U_2(T) \ T sat_add_u_2_##T(T x, T y) \ { \ T ret; \ T overflow = __builtin_add_overflow (x, y, ); \ return (T)(-overflow) | ret; \ } Form 3: #define SAT_ADD_U_3(T) \ T sat_add_u_3_##T (T x, T y) \ { \ T ret; \ return __builtin_add_overflow (x, y, ) ? -1 : ret; \ } Form 4: #define SAT_ADD_U_4(T) \ T sat_add_u_4_##T (T x, T y) \ { \ T ret; \ return __builtin_add_overflow (x, y, ) == 0 ? ret : -1; \ } Form 5: #define SAT_ADD_U_5(T) \ T sat_add_u_5_##T(T x, T y) \ { \ return (T)(x + y) < x ? -1 : (x + y); \ } Take the forms 3 of above as example: uint64_t sat_add (uint64_t x, uint64_t y) { uint64_t ret; return __builtin_add_overflow (x, y, ) ? -1 : ret; } Before this patch: uint64_t sat_add (uint64_t x, uint64_t y) { long unsigned int _1; long unsigned int _2; uint64_t _3; __complex__ long unsigned int _6; ;; basic block 2, loop depth 0 ;;pred: ENTRY _6 = .ADD_OVERFLOW (x_4(D), y_5(D)); _2 = IMAGPART_EXPR <_6>; if (_2 != 0) goto ; [35.00%] else goto ; [65.00%] ;;succ: 4 ;;3 ;; basic block 3, loop depth 0 ;;pred: 2 _1 = REALPART_EXPR <_6>; ;;succ: 4 ;; basic block 4, loop depth 0 ;;pred: 3 ;;2 # _3 = PHI <_1(3), 18446744073709551615(2)> return _3; ;;succ: EXIT } After this patch: uint64_t sat_add (uint64_t x, uint64_t y) { long unsigned int _12; ;; basic block 2, loop depth 0 ;;pred: ENTRY _12 = .SAT_ADD (x_4(D), y_5(D)); [tail call] return _12; ;;succ: EXIT } The flag '^' acts on cond_expr will generate matching code similar as below: else if (gphi *_a1 = dyn_cast (_d1)) { basic_block _b1 = gimple_bb (_a1); if (gimple_phi_num_args (_a1) == 2) { basic_block _pb_0_1 = EDGE_PRED (_b1, 0)->src; basic_block _pb_1_1 = EDGE_PRED (_b1, 1)->src; basic_block _db_1 = safe_dyn_cast (*gsi_last_bb (_pb_0_1)) ? _pb_0_1 : ... basic_block _other_db_1 = safe_dyn_cast (*gsi_last_bb (_pb_0_1)) ? _pb_1_1 : ... gcond *_ct_1 = safe_dyn_cast (*gsi_last_bb (_db_1)); if (_ct_1 && EDGE_COUNT (_other_db_1->preds) == 1 && EDGE_COUNT (_other_db_1->succs) == 1 && EDGE_PRED (_other_db_1, 0)->src == _db_1) { tree _cond_lhs_1 = gimple_cond_lhs (_ct_1); tree _cond_rhs_1 = gimple_cond_rhs (_ct_1); tree _p0 = build2 (gimple_cond_code (_ct_1), boolean_type_node, _cond_lhs_1, ...); bool _arg_0_is_true_1 = gimple_phi_arg_edge (_a1, 0)->flags & EDGE_TRUE_VALUE; tree _p1 = gimple_phi_arg_def (_a1, _arg_0_is_true_1 ? 0 : 1); tree _p2 = gimple_phi_arg_def (_a1, _arg_0_is_true_1 ? 1 : 0); switch (TREE_CODE (_p0)) ... The below test suites are still running, will update it later. * The x86 bootstrap test. * The x86 fully regression test. * The riscv fully regression test. gcc/ChangeLog: * doc/match-and-simplify.texi: Add doc for the matching flag '^'. * genmatch.cc (enum expr_flag): Add new enum for expr flag. (dt_node::gen_kids_1): Add cond_expr and flag handling. (dt_operand::gen_phi_on_cond): Add new func to gen phi matching on cond_expr. (parser::parse_expr): Add handling for the expr flag '^'. * match.pd: Add more form for unsigned .SAT_ADD. * tree-ssa-math-opts.cc (match_saturation_arith): Rename from. (match_assign_saturation_arith): Rename to. (match_phi_saturation_arith): Add new func impl to match the .SAT_ADD when phi. (math_opts_dom_walker::after_dom_children): Add phi matching try for all gimple phi stmt. Signed-off-by: Pan Li --- gcc/doc/match-and-simplify.texi | 16 gcc/genmatch.cc | 126 +++- gcc/match.pd| 43 ++- gcc/tree-ssa-math-opts.cc | 51 - 4 files changed, 231 insertions(+), 5 deletions(-) diff --git a/gcc/doc/match-and-simplify.texi b/gcc/doc/match-and-simplify.texi index 01f19e2f62c..9c7316755d4 100644 --- a/gcc/doc/match-and-simplify.texi +++ b/gcc/doc/match-and-simplify.texi @@ -361,6 +361,22 @@ Usually the types of the generated result expressions are determined from the context, but sometimes like in the above case it is required that you specify them explicitly. +Another modifier for generated expressions is @code{^} which +tells the machinery to try more matches for some special
Results for 15.0.0 20240530 (experimental) [remotes/origin/master r15-930-ge715204f203] (GCC) testsuite on pru-unknown-elf
= " FAIL: gcc.dg/tree-ssa/if-to-switch-1.c scan-tree-dump iftoswitch "Condition chain with [^\\n\\r]* BBs transformed into a switch statement." FAIL: gcc.dg/tree-ssa/if-to-switch-10.c scan-tree-dump iftoswitch "Condition chain with [^\\n\\r]* BBs transformed into a switch statement." FAIL: gcc.dg/tree-ssa/if-to-switch-3.c scan-tree-dump iftoswitch "Condition chain with [^\\n\\r]* BBs transformed into a switch statement." FAIL: gcc.dg/tree-ssa/if-to-switch-9.c scan-tree-dump iftoswitch "Condition chain with [^\\n\\r]* BBs transformed into a switch statement." FAIL: gcc.dg/tree-ssa/pr103281-1.c scan-tree-dump-not optimized "foo " FAIL: gcc.dg/tree-ssa/ssa-dom-thread-7.c scan-tree-dump thread2 "Jumps threaded: 9" FAIL: gcc.dg/tree-ssa/update-threading.c scan-tree-dump-times optimized "Invalid sum" 0 FAIL: outputs-22 exe savetmp namedb-2: outputs.ld1_args FAIL: outputs-23 exe savetmp named2-2: outputs.ld1_args FAIL: outputs-24 exe savetmp named2-3: outputs.ld1_args FAIL: outputs-25 exe savetmp named2-4: outputs.ld1_args FAIL: outputs-294 lto sing unnamed-3: a.ld1_args FAIL: outputs-294 lto sing unnamed-3: a.ld_args === gcc Summary === # of expected passes133343 # of unexpected failures61 # of unexpected successes 2 # of expected failures 873 # of unresolved testcases 1 # of unsupported tests 4677 /home/dinux/projects/pru/testbot-workspace/pru-gcc-build/gcc/xgcc version 15.0.0 20240530 (experimental) [remotes/origin/master r15-930-ge715204f203] (GCC) Host is x86_64-pc-linux-gnu === g++ tests === Running target pru-sim FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++14 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++14 expected multiline pattern lines 49-64 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++14 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++17 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++17 expected multiline pattern lines 49-64 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++17 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++20 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++20 expected multiline pattern lines 49-64 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++20 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++98 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++98 expected multiline pattern lines 49-64 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c -std=c++98 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++14 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++14 expected multiline pattern lines 19-34 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++14 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++17 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++17 expected multiline pattern lines 19-34 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++17 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++20 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++20 expected multiline pattern lines 19-34 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++20 (test for excess errors) FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++98 2 blank line(s) in output FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++98 expected multiline pattern lines 19-34 FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c -std=c++98 (test for excess errors) FAIL: c-c++-common/pr103798-2.c -std=gnu++14 scan-assembler-not memchr FAIL: c-c++-common/pr103798-2.c -std=gnu++17 scan-assembler-not memchr FAIL: c-c++-common/pr103798-2.c -std=gnu++20 scan-assembler-not memchr FAIL: c-c++-common/pr103798-2.c -std=gnu++98 scan-assembler-not memchr FAIL: c-c++-common/pr103798-3.c -std=gnu++14 scan-assembler-not memchr FAIL: c-c++-common/pr103798-3.c -std=gnu++17 scan-assembler-not memchr FAIL: c-c++-common/pr103798-3.c -std=gnu++20 scan-assembler-not memchr FAIL: c-c++-common/pr103798-3.c -std=gnu++98 scan-assembler-not memchr FAIL: c-c++-common/pr103798-4.c -std=gnu++14 scan-assembler-not memchr FAIL: c-c++-common/pr103798-4.c -std=gnu++17 scan-assembler-not memchr FAIL: c-c++-common/pr103798-4.c -std=gnu++20 scan-assembler-not memchr FAIL: c-c++-common/pr103798-4.c -std=gnu++98 scan-assembler-not memchr FAIL: g++.dg/Wno-frame-address.C -std=gnu++14 (test
Results for 15.0.0 20240530 (experimental) [remotes/origin/HEAD r15-930-ge715204f20] (GCC) testsuite on powerpc64le-unknown-linux-gnu
-partition=none -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr68860-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr68860-1.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr68860-1.c -Os -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr68860-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/pr68860-2.c -O3 -g -DPREVENT_OPTIMIZATION line 16 y == 2 FAIL: gcc.dg/guality/sra-1.c -O2 -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 21 a.i == 4 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 21 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 32 a[0] == 4 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 32 a[1] == 14 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 43 a.i == 4 FAIL: gcc.dg/guality/sra-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -O3 -g -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -Os -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 21 a.i == 4 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 21 a.j == 14 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 32 a[0] == 4 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 32 a[1] == 14 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 43 a.i == 4 FAIL: gcc.dg/guality/sra-1.c -Og -DPREVENT_OPTIMIZATION line 43 a.j == 14 FAIL: gcc.dg/guality/vla-1.c -O2 -DPREVENT_OPTIMIZATION line 17 sizeof (a) == 6 FAIL: gcc.dg/guality/vla-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 17 sizeof (a) == 6 FAIL: gcc.dg/guality/vla-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 17 sizeof (a) == 6 FAIL: gcc.dg/guality/vla-1.c -O3 -g -DPREVENT_OPTIMIZATION line 17 sizeof (a) == 6 FAIL: gcc.dg/guality/vla-1.c -Os -DPREVENT_OPTIMIZATION line 17 sizeof (a) == 6 FAIL: gcc.dg/torture/pr52451.c -O0 execution test FAIL: gcc.dg/torture/pr52451.c -O1 execution test FAIL: gcc.dg/torture/pr52451.c -O2 execution test FAIL: gcc.dg/torture/pr52451.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.dg/torture/pr52451.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.dg/torture/pr52451.c -O3 -g execution test FAIL: gcc.dg/torture/pr52451.c -Os execution test XPASS: gcc.dg/tree-ssa/ssa-dom-cse-2.c scan-tree-dump optimized "return 28;" FAIL: gcc.dg/tree-ssa/update-threading.c scan-tree-dump-times optimized "Invalid sum" 0 FAIL: gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c scan-tree-dump-times vect "vectorizing stmts using SLP" 3 FAIL: gcc.dg/vect/pr112325.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/pr112325.c scan-tree-dump-times vect "vectorized 1 loops" 1 FAIL: gcc.dg/vect/vect-117.c -flto -ffat-lto-objects scan-tree-dump-not optimized "Invalid sum" FAIL: gcc.dg/vect/vect-117.c scan-tree-dump-not optimized "Invalid sum" FAIL: gcc.target/powerpc/pr66144-3.c scan-assembler mxxselM FAIL: gcc.target/powerpc/rlwimi-2.c scan-assembler-times (?n)^s+[a-z] 20217 XPASS: gcc.target/powerpc/ppc-fortran/ieee128-math.f90 -O (test for excess errors) === gcc Summary === # of expected passes178771 # of unexpected failures129 # of unexpected successes 13 # of expected failures 1602 # of unsupported tests 5048 /home/gccbuild/build/nightly/build-gcc-trunk/gcc/xgcc version 15.0.0 20240530 (experimental) [remotes/origin/HEAD r15-930-ge715204f20] (GCC) === gfortran tests === Running target unix XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -O0 execution test XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -O1 execution test XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -O2 execution test XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -O3 -g execution test XPASS: gfortran.dg/large_real_kind_form_io_2.f90 -Os execution test FAIL: gfortran.
Results for 15.0.0 20240530 (experimental) [master r15-930-ge715204f20] (GCC) testsuite on powerpc64-unknown-linux-gnu
git commit g:e715204f203d318524ae86f3f2a1e8d5d7cb08dc gcc-descr r15-930-ge715204f203d31 power9 BE Linux 6.7.12-powerpc64 ppc64 GNU Make 4.3 DejaGnu: DejaGnu version 1.6.3 Expect version 5.45.4 Tcl version 8.6 64-bit LAST_UPDATED: Thu May 30 22:12:39 UTC 2024 (revision r15-930-ge715204f20) Native configuration is powerpc64-unknown-linux-gnu === g++ tests === Running target unix/-m32 FAIL: c-c++-common/torture/strub-run3.c -O0 execution test === g++ Summary for unix/-m32 === # of expected passes251911 # of unexpected failures1 # of expected failures 2618 # of unsupported tests 11565 Running target unix/-m64 === g++ Summary for unix/-m64 === # of expected passes260933 # of expected failures 2623 # of unsupported tests 11738 === g++ Summary === # of expected passes512844 # of unexpected failures1 # of expected failures 5241 # of unsupported tests 23303 /home/gccbuild/build/nightly/build-gcc-trunk/gcc/xg++ version 15.0.0 20240530 (experimental) [master r15-930-ge715204f20] (GCC) === gcc tests === Running target unix/-m32 XPASS: gcc.dg/guality/example.c -O0 execution test XPASS: gcc.dg/guality/example.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/example.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O0 execution test XPASS: gcc.dg/guality/guality.c -O1 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Os -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/guality.c -Og -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -O3 -g -DPREVENT_OPTIMIZATION execution test XPASS: gcc.dg/guality/inline-params.c -Os -DPREVENT_OPTIMIZATION execution test FAIL: gcc.dg/guality/loop-1.c -O2 -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/loop-1.c -O3 -g -DPREVENT_OPTIMIZATION line 20 i == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 16 arg7 == 30 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg1 == 1 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg2 == 2 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg3 == 3 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg4 == 4 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg5 == 5 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -DPREVENT_OPTIMIZATION line 18 arg6 == 6 FAIL: gcc.dg/guality/pr36728-2.c -O2 -flto -fuse-linker
Results for 15.0.0 20240530 (experimental) [master r15-930-ge715204f203] (GCC) testsuite on i686-pc-linux-gnu
+ 3 FAIL: gcc.target/i386/cleanup-1.c (test for excess errors) UNRESOLVED: gcc.target/i386/cleanup-1.c compilation failed to produce executable FAIL: gcc.target/i386/interrupt-12.c scan-assembler-times leave 1 FAIL: gcc.target/i386/interrupt-13.c scan-assembler-times leave 1 FAIL: gcc.target/i386/interrupt-14.c scan-assembler-times leave 2 FAIL: gcc.target/i386/interrupt-15.c scan-assembler-times leave 2 FAIL: gcc.target/i386/ipa-stack-alignment-2.c scan-assembler sub.*%.sp FAIL: gcc.target/i386/ipa-stack-alignment.c scan-assembler sub.*%.sp FAIL: gcc.target/i386/minmax-10.c scan-assembler-not cmp FAIL: gcc.target/i386/minmax-10.c scan-assembler-times test 6 FAIL: gcc.target/i386/pr100704-3.c scan-assembler push[lq]\\tf+ FAIL: gcc.target/i386/pr103144-mul-1.c scan-tree-dump-times vect "vectorized 1 loops" 4 FAIL: gcc.target/i386/pr103144-neg-1.c scan-tree-dump-times vect "vectorized 1 loops" 4 FAIL: gcc.target/i386/pr103144-shift-1.c scan-tree-dump-times vect "vectorized 1 loops" 6 FAIL: gcc.target/i386/pr106245-3.c scan-assembler cltd FAIL: gcc.target/i386/pr31985.c scan-assembler-times movl 4 XPASS: gcc.target/i386/pr54855-9.c scan-assembler-not movaps FAIL: gcc.target/i386/pr79690.c scan-assembler mov[au]p.[ \\t][^,]+, %gs: FAIL: gcc.target/i386/pr79723.c scan-assembler mov[au]p.[ \\t][^,]+, %gs: FAIL: gcc.target/i386/pr82699-1.c scan-assembler-times t.cfi_startprocntendbr 1 FAIL: gcc.target/i386/pr82699-2.c scan-assembler-times t.cfi_startprocntendbr 1 FAIL: gcc.target/i386/pr82699-3.c scan-assembler-times t.cfi_startprocntendbr 1 FAIL: gcc.target/i386/pr82699-5.c scan-assembler-times t.cfi_startprocntendbr 1 FAIL: gcc.target/i386/pr82699-6.c scan-assembler-times t.cfi_startprocntendbr 1 FAIL: gcc.target/i386/pr90356.c scan-assembler pxor FAIL: gcc.target/i386/pr93492-2.c scan-assembler \\t.cfi_startproc\\n\\tendbr(32|64)\\n.*.LPFE0:\\n\\tnop\\n\\tret\\n FAIL: gcc.target/i386/pr93492-3.c scan-assembler \\t.cfi_startproc\\n\\tendbr(32|64)\\n.*.LPFE0:\\n\\tnop\\n1:\\tcall\\t[^\\n]*__fentry__[^\\n]*\\n\\tret\\n FAIL: gcc.target/i386/pr93492-4.c scan-assembler \\t.cfi_startproc\\n.*.LPFE0:\\n\\tnop\\n\\tret\\n FAIL: gcc.target/i386/pr93492-5.c scan-assembler \\t.cfi_startproc\\n.*.LPFE0:\\n\\tnop\\n1:\\tcall\\t[^\\n]*__fentry__[^\\n]*\\n\\tret\\n FAIL: gcc.target/i386/pr95126-m32-1.c scan-assembler movl[ t]*\$ FAIL: gcc.target/i386/pr95126-m32-2.c scan-assembler movl[ t]*\$ FAIL: gcc.target/i386/pr97032.c (internal compiler error: output_operand: invalid use of register 'frame') FAIL: gcc.target/i386/pr97032.c (test for excess errors) UNRESOLVED: gcc.target/i386/pr97032.c scan-assembler call[ \\t]*_?__errno_location FAIL: gcc.target/i386/sse2-pr39821.c scan-tree-dump-times vect "vectorized 1 loops in function" 5 FAIL: gcc.target/i386/sse4-pr39821.c scan-tree-dump-times vect "vectorized 1 loops in function" 6 FAIL: gcc.target/i386/vec_pack_fp16-1.c scan-assembler-times vcvtdq2ph 2 FAIL: gcc.target/i386/vec_pack_fp16-1.c scan-assembler-times vcvtph2ps 2 FAIL: gcc.target/i386/vec_pack_fp16-1.c scan-assembler-times vcvtps2ph 2 FAIL: gcc.target/i386/vec_pack_fp16-1.c scan-assembler-times vcvttph2dq 2 FAIL: gcc.target/i386/vec_pack_fp16-2.c scan-assembler-times vcvtdq2ph 2 FAIL: gcc.target/i386/vec_pack_fp16-2.c scan-assembler-times vcvtph2ps 2 FAIL: gcc.target/i386/vec_pack_fp16-2.c scan-assembler-times vcvtps2ph 2 FAIL: gcc.target/i386/vec_pack_fp16-2.c scan-assembler-times vcvttph2dq 2 FAIL: gcc.target/i386/vect-double-2.c scan-tree-dump-times vect "Vectorized loops: 1" 1 FAIL: gcc.target/i386/vect-float16-11.c scan-assembler-times vdivph 16 FAIL: gcc.target/i386/vect-float16-12.c scan-assembler-times vdivph 16 FAIL: gcc.target/i386/vect-float16-2.c scan-assembler-times vaddph 16 FAIL: gcc.target/i386/vect-float16-3.c scan-assembler-times vaddph 16 FAIL: gcc.target/i386/vect-float16-5.c scan-assembler-times vsubph 16 FAIL: gcc.target/i386/vect-float16-6.c scan-assembler-times vsubph 16 FAIL: gcc.target/i386/vect-float16-8.c scan-assembler-times vmulph 16 FAIL: gcc.target/i386/vect-float16-9.c scan-assembler-times vmulph 16 FAIL: gcc.target/i386/vect-pr113078.c scan-assembler-times vpsub[^\\r\\n]*%k 2 FAIL: gcc.target/i386/vect-pr67800.c scan-tree-dump vect "vectorized 1 loops" FAIL: gcc.target/i386/vect-reduc-1.c scan-assembler-times padd 5 FAIL: gcc.target/i386/vect-reduc-1.c scan-assembler-times psrl 2 FAIL: gcc.target/i386/vect-shiftv4qi.c scan-assembler-times psrlw 5 FAIL: gcc.target/i386/xorsign.c scan-tree-dump-times vect "vectorized 2 loops" 1 === gcc Summary === # of expected passes196410 # of unexpected failures228 # of unexpected successes 27 # of expected failures 1503 # of unresolved testcases 114 # of unsupported tests 4197 /home/haoch
Regressions on master at commit r15-930 vs commit r15-929 on Linux/x86_64
Regressions on master at commit r15-930 vs commit r15-929 on Linux/x86_64 New failures: FAIL: gcc.dg/lto/save-temps c_lto_save-temps_0.o-c_lto_save-temps_0.o link, -O -flto -save-temps New passes:
Results for 15.0.0 20240530 (experimental) [master r15-930-ge715204f203] (GCC) testsuite on x86_64-pc-linux-gnu
o_iommu_type1.c -fplugin=./analyzer_kernel_plugin.so (test for bogus messages, line 42) FAIL: gcc.dg/tree-ssa/pr64910-2.c scan-assembler-times and|test 20 FAIL: gcc.dg/tree-ssa/slsr-31.c scan-tree-dump-times optimized " * 2" 1 FAIL: gcc.dg/vect/slp-perm-9.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorizing stmts using SLP" 1 FAIL: gcc.dg/vect/slp-perm-9.c scan-tree-dump-times vect "vectorizing stmts using SLP" 1 XPASS: gcc.dg/vect/vect-reduc-in-order-1.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-1.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c execution test FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512dq-pr88465.c scan-assembler-times kxnorb[ \\t] 1 FAIL: gcc.target/i386/avx512f-pr88465.c scan-assembler-times kxnorw[ \\t] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%xmm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%ymm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%xmm[0-9], *[^,]* 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%ymm[0-9], *[^,]* 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kmovb[\\t ] 4 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times korb[\\t ] 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kxorb[\\t ] 1 FAIL: gcc.target/i386/minmax-10.c scan-assembler-not cmp FAIL: gcc.target/i386/minmax-10.c scan-assembler-times test 6 FAIL: gcc.target/i386/pieces-memset-11.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-14.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-2.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-20.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-23.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-29.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-30.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-33.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-34.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-37.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-44.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-5.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pr31985.c scan-assembler-times movl 4 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-6.c scan-assembler-times (?:vinserti128|vmovdqu)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 2 FAIL: gcc.target/i386/pr97873-1.c scan-assembler pabsq FAIL: gcc.target/i386/vect-double-2.c scan-tree-dump-times vect "Vectorized loops: 1" 1 FAIL: gcc.target/i386/vect-shiftv4qi.c scan-assembler-times psrlw 5 FAIL: gcc.target/i386/xorsign.c scan-tree-dump-times vect "vectorized 2 loops" 1 === gcc Summary for unix/-m32 === # of expected passes197791 # of unexpected failures158 # of unexpected successes 30 # of expected failures 1553 # of unsupported tests 4077 === gcc Summary === # of expected passes401942 # of unexpected failures319 # of unexpected successes 50 # of expected failures 3100 # of unsupported tests 7352 /export/home/haochenj/src/gcc-regression/bld/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-930-ge715204f203] (GCC) === gfortran tests === Running target unix === gfortran Summary for unix === # of expected passes70253 # of expected failures 273 # of unsupported tests 65 Running targe
[Bug c++/115296] New: CTAD fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115296 Bug ID: 115296 Summary: CTAD fails Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: tiagomacarios at gmail dot com Target Milestone: --- The following code compiles fine with clang and msvc, but fails with gcc. https://godbolt.org/z/e4dP7rzar ``` #include template using array_view = std::span; void fun(std::span s) { [[maybe_unused]] auto _1 = std::span{s}; [[maybe_unused]] auto _2 = array_view{s}; } ``` Error: ``` In file included from :1: /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span: In function 'void fun(std::span)': /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span:450:5: error: size '18446744073709551615' of array exceeds maximum object size '9223372036854775807' 450 | span(_Type(&)[_ArrayExtent]) -> span<_Type, _ArrayExtent>; | ^~~~ /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span:450:10: error: size '18446744073709551615' of array exceeds maximum object size '9223372036854775807' 450 | span(_Type(&)[_ArrayExtent]) -> span<_Type, _ArrayExtent>; | ^~ :8:44: error: class template argument deduction failed: 8 | [[maybe_unused]] auto _2 = array_view{s}; |^ :8:44: error: call of overloaded 'span(std::span&)' is ambiguous /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span:464:5: note: candidate: 'std::span(_Range&&)-> span >::type> requires __is_deducible (array_view, std::span)()))&>)())>::type, 18446744073709551615>) [with _Range = span&; typename remove_reference >::type = int; ranges::range_reference_t<_Range&> = int&]' 464 | span(_Range &&) | ^~~~ /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span:54:11: note: candidate: 'span(std::span<_Type, 18446744073709551615>)-> std::span<_Type, 18446744073709551615> [with T = int]' 54 | class span; | ^~~~ /opt/compiler-explorer/gcc-trunk-20240530/include/c++/15.0.0/span:225:7: note: candidate: 'span(const std::span<_Type, 18446744073709551615>&)-> std::span<_Type, 18446744073709551615> [with T = int]' 225 | span(const span&) noexcept = default; | ^~~~ Compiler returned: 1 ```
Results for 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) testsuite on x86_64-apple-darwin17
LAST_UPDATED: Wed 29 May 2024 00:21:40 UTC (revision r13-8807-gebca6006f444) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin17 === g++ tests === Running target unix/-m32 FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: g++.dg/asan/pr69276.C -O0 output pattern test FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/cpp0x/udlit-embed-quote.C -std=c++14 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++14 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++17 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++20 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++98 (test for excess errors) FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++14 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++17 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++20 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++98 (test for excess errors) FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test === g++ Summary for unix/-m32 === # of expected passes231182 # of unexpected failures39 # of expected failures 2080 # of unsupported tests 11168 Running target unix/-m64 FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: g++.dg/asan/pr69276.C -O0 output pattern test FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL:
RE: [PATCH] aarch64: testsuite: Explicitly add -mlittle-endian to vget_low_2.c
> Pengxuan Zheng writes: > > vget_low_2.c is a test case for little-endian, but we missed the > > -mlittle-endian flag in r15-697-ga2e4fe5a53cf75. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.target/aarch64/vget_low_2.c: Add -mlittle-endian. > > Ok, thanks. > > If you'd like write access, please follow the instructions on > https://gcc.gnu.org/gitwrite.html (I'll sponsor). > > Richard Thanks a lot, Richard! I really appreciate it! I have submitted a request for write access naming you as sponsor. Thanks, Pengxuan > > > Signed-off-by: Pengxuan Zheng > > --- > > gcc/testsuite/gcc.target/aarch64/vget_low_2.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/gcc/testsuite/gcc.target/aarch64/vget_low_2.c > > b/gcc/testsuite/gcc.target/aarch64/vget_low_2.c > > index 44414e1c043..93e9e664ee9 100644 > > --- a/gcc/testsuite/gcc.target/aarch64/vget_low_2.c > > +++ b/gcc/testsuite/gcc.target/aarch64/vget_low_2.c > > @@ -1,5 +1,5 @@ > > /* { dg-do compile } */ > > -/* { dg-options "-O3 -fdump-tree-optimized" } */ > > +/* { dg-options "-O3 -fdump-tree-optimized -mlittle-endian" } */ > > > > #include
[Bug c++/115291] armv8-a GCC emits float32x2_t loads from uninitialized stack
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115291 --- Comment #2 from Andrew Pinski --- See https://libeigen.gitlab.io/docs/TopicPitfalls.html section "C++11 and the auto keyword" explictly. "In short: do not use the auto keywords with Eigen's expressions, unless you are 100% sure about what you are doing. In particular, do not use the auto keyword as a replacement for a Matrix<> type." Describes the issue you are having.
gcc-12-20240530 is now available
Snapshot gcc-12-20240530 is now available on https://gcc.gnu.org/pub/gcc/snapshots/12-20240530/ and on various mirrors, see https://gcc.gnu.org/mirrors.html for details. This snapshot has been generated from the GCC 12 git branch with the following options: git://gcc.gnu.org/git/gcc.git branch releases/gcc-12 revision e26f16424f6279662efb210bc87c77148e956fed You'll find: gcc-12-20240530.tar.xz Complete GCC SHA256=e4b060b7f3684cee039d7aed953f57ac6b4c07b077aac1547cd790b503d145fe SHA1=5291fdf96726bb19f99aec4fe83abca2cbaa0096 Diffs from 12-20240523 are available in the diffs/ subdirectory. When a particular snapshot is ready for public consumption the LATEST-12 link is updated and a message is sent to the gcc list. Please do not use a snapshot before it has been announced that way.
Results for 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) testsuite on x86_64-apple-darwin18
LAST_UPDATED: Sat 25 May 2024 00:19:36 UTC (revision r12-10471-ge11d3dd4708e) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin18 === g++ tests === Running target unix FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: g++.dg/init/array61.C -std=c++14 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++17 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++20 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) === g++ Summary === # of expected passes225180 # of unexpected failures38 # of expected failures 2085 # of unsupported tests 10717 /scratch/10-14-moj/gcc-12/gcc/xg++ version 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) === gcc tests === Running target unix FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2
[committed] i386: Rewrite bswaphi2 handling [PR115102]
Introduce *bswaphi2 instruction pattern and enable bswaphi2 expander also for non-movbe targets. The testcase: unsigned short bswap8 (unsigned short val) { return ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } now expands through bswaphi2 named expander. Rewrite bswaphi_lowpart insn pattern as bswaphisi2_lowpart in the RTX form that combine pass can use to simplify: Trying 6, 9, 8 -> 10: 6: r99:SI=bswap(r103:SI) 9: {r107:SI=r103:SI&0x;clobber flags:CC;} REG_DEAD r103:SI REG_UNUSED flags:CC 8: {r106:SI=r99:SI 0>>0x10;clobber flags:CC;} REG_DEAD r99:SI REG_UNUSED flags:CC 10: {r104:SI=r106:SI|r107:SI;clobber flags:CC;} REG_DEAD r107:SI REG_DEAD r106:SI REG_UNUSED flags:CC Successfully matched this instruction: (set (reg:SI 104 [ _8 ]) (ior:SI (and:SI (reg/v:SI 103 [ val ]) (const_int -65536 [0x])) (lshiftrt:SI (bswap:SI (reg/v:SI 103 [ val ])) (const_int 16 [0x10] allowing combination of insns 6, 8, 9 and 10 when compiling the following testcase: unsigned int bswap8 (unsigned int val) { return (val & 0x) | ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } to produce: movl%edi, %eax xchgb %ah, %al ret The expansion now always goes through a clobberless form of the bswaphi instruction. The instruction is conditionally converted to a rotate at peephole2 pass. This significantly simplifies bswaphisi2_lowpart insn pattern attributes. PR target/115102 gcc/ChangeLog: * config/i386/i386.md (bswaphi2): Also enable for !TARGET_MOVBE. (*bswaphi2): New insn pattern. (bswaphisi2_lowpart): Rename from bswaphi_lowpart. Rewrite insn RTX to match the expected form of the combine pass. Remove rol{w} alternative and corresponding attributes. (bswsaphisi2_lowpart peephole2): New peephole2 pattern to conditionally convert bswaphisi2_lowpart to rotlhi3_1_slp. (bswapsi2): Update expander for rename. (rotlhi3_1_slp splitter): Conditionally split to bswaphi2. gcc/testsuite/ChangeLog: * gcc.target/i386/pr115102.c: New test. Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}. Uros. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c162cd42386..375654cf74e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -17210,9 +17210,7 @@ (define_split (clobber (reg:CC FLAGS_REG))] "reload_completed && (TARGET_USE_XCHGB || optimize_function_for_size_p (cfun))" - [(parallel [(set (strict_low_part (match_dup 0)) - (bswap:HI (match_dup 0))) -(clobber (reg:CC FLAGS_REG))])]) + [(set (match_dup 0) (bswap:HI (match_dup 0)))]) ;; Rotations through carry flag (define_insn "rcrsi2" @@ -20730,12 +20728,11 @@ (define_expand "bswapsi2" operands[1] = force_reg (SImode, operands[1]); else { - rtx x = operands[0]; + rtx x = gen_reg_rtx (SImode); - emit_move_insn (x, operands[1]); - emit_insn (gen_bswaphi_lowpart (gen_lowpart (HImode, x))); + emit_insn (gen_bswaphisi2_lowpart (x, operands[1])); emit_insn (gen_rotlsi3 (x, x, GEN_INT (16))); - emit_insn (gen_bswaphi_lowpart (gen_lowpart (HImode, x))); + emit_insn (gen_bswaphisi2_lowpart (operands[0], x)); DONE; } }) @@ -20767,7 +20764,11 @@ (define_insn "*bswap2" (define_expand "bswaphi2" [(set (match_operand:HI 0 "register_operand") (bswap:HI (match_operand:HI 1 "nonimmediate_operand")))] - "TARGET_MOVBE") + "" +{ + if (!TARGET_MOVBE) +operands[1] = force_reg (HImode, operands[1]); +}) (define_insn "*bswaphi2_movbe" [(set (match_operand:HI 0 "nonimmediate_operand" "=Q,r,m") @@ -20788,33 +20789,55 @@ (define_insn "*bswaphi2_movbe" (set_attr "bdver1_decode" "double,*,*") (set_attr "mode" "QI,HI,HI")]) +(define_insn "*bswaphi2" + [(set (match_operand:HI 0 "register_operand" "=Q") + (bswap:HI (match_operand:HI 1 "register_operand" "0")))] + "!TARGET_MOVBE" + "xchg{b}\t{%h0, %b0|%b0, %h0}" + [(set_attr "type" "imov") + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") + (set_attr "bdver1_decode" "double") + (set_attr "mode" "QI")]) + (define_peephole2 [(set (match_operand:HI 0 "general_reg_operand") (bswap:HI (match_dup 0)))] - "TARGET_MOVBE - && !(TARGET_USE_XCHGB || optimize_function_for_size_p (cfun)) + "!(TARGET_USE_XCHGB || + TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)) && peep2_regno_dead_p (0, FLAGS_REG)" [(parallel [(set (match_dup 0) (rotate:HI (match_dup 0) (const_int 8))) (clobber (reg:CC FLAGS_REG))])]) -(define_insn "bswaphi_lowpart" - [(set (strict_low_part (match_operand:HI 0 "register_operand" "+Q,r")) - (bswap:HI (match_dup 0))) - (clobber (reg:CC FLAGS_REG))] +(define_insn "bswaphisi2_lowpart" + [(set (match_operand:SI 0 "register_operand"
[Bug target/115102] [SH] GCC misunderstands swap.b instruction
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115102 --- Comment #5 from GCC Commits --- The master branch has been updated by Uros Bizjak : https://gcc.gnu.org/g:e715204f203d318524ae86f3f2a1e8d5d7cb08dc commit r15-930-ge715204f203d318524ae86f3f2a1e8d5d7cb08dc Author: Uros Bizjak Date: Thu May 30 21:27:42 2024 +0200 i386: Rewrite bswaphi2 handling [PR115102] Introduce *bswaphi2 instruction pattern and enable bswaphi2 expander also for non-movbe targets. The testcase: unsigned short bswap8 (unsigned short val) { return ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } now expands through bswaphi2 named expander. Rewrite bswaphi_lowpart insn pattern as bswaphisi2_lowpart in the RTX form that combine pass can use to simplify: Trying 6, 9, 8 -> 10: 6: r99:SI=bswap(r103:SI) 9: {r107:SI=r103:SI&0x;clobber flags:CC;} REG_DEAD r103:SI REG_UNUSED flags:CC 8: {r106:SI=r99:SI 0>>0x10;clobber flags:CC;} REG_DEAD r99:SI REG_UNUSED flags:CC 10: {r104:SI=r106:SI|r107:SI;clobber flags:CC;} REG_DEAD r107:SI REG_DEAD r106:SI REG_UNUSED flags:CC Successfully matched this instruction: (set (reg:SI 104 [ _8 ]) (ior:SI (and:SI (reg/v:SI 103 [ val ]) (const_int -65536 [0x])) (lshiftrt:SI (bswap:SI (reg/v:SI 103 [ val ])) (const_int 16 [0x10] allowing combination of insns 6, 8, 9 and 10 when compiling the following testcase: unsigned int bswap8 (unsigned int val) { return (val & 0x) | ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } to produce: movl%edi, %eax xchgb %ah, %al ret The expansion now always goes through a clobberless form of the bswaphi instruction. The instruction is conditionally converted to a rotate at peephole2 pass. This significantly simplifies bswaphisi2_lowpart insn pattern attributes. PR target/115102 gcc/ChangeLog: * config/i386/i386.md (bswaphi2): Also enable for !TARGET_MOVBE. (*bswaphi2): New insn pattern. (bswaphisi2_lowpart): Rename from bswaphi_lowpart. Rewrite insn RTX to match the expected form of the combine pass. Remove rol{w} alternative and corresponding attributes. (bswsaphisi2_lowpart peephole2): New peephole2 pattern to conditionally convert bswaphisi2_lowpart to rotlhi3_1_slp. (bswapsi2): Update expander for rename. (rotlhi3_1_slp splitter): Conditionally split to bswaphi2. gcc/testsuite/ChangeLog: * gcc.target/i386/pr115102.c: New test.
[gcc r15-930] i386: Rewrite bswaphi2 handling [PR115102]
https://gcc.gnu.org/g:e715204f203d318524ae86f3f2a1e8d5d7cb08dc commit r15-930-ge715204f203d318524ae86f3f2a1e8d5d7cb08dc Author: Uros Bizjak Date: Thu May 30 21:27:42 2024 +0200 i386: Rewrite bswaphi2 handling [PR115102] Introduce *bswaphi2 instruction pattern and enable bswaphi2 expander also for non-movbe targets. The testcase: unsigned short bswap8 (unsigned short val) { return ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } now expands through bswaphi2 named expander. Rewrite bswaphi_lowpart insn pattern as bswaphisi2_lowpart in the RTX form that combine pass can use to simplify: Trying 6, 9, 8 -> 10: 6: r99:SI=bswap(r103:SI) 9: {r107:SI=r103:SI&0x;clobber flags:CC;} REG_DEAD r103:SI REG_UNUSED flags:CC 8: {r106:SI=r99:SI 0>>0x10;clobber flags:CC;} REG_DEAD r99:SI REG_UNUSED flags:CC 10: {r104:SI=r106:SI|r107:SI;clobber flags:CC;} REG_DEAD r107:SI REG_DEAD r106:SI REG_UNUSED flags:CC Successfully matched this instruction: (set (reg:SI 104 [ _8 ]) (ior:SI (and:SI (reg/v:SI 103 [ val ]) (const_int -65536 [0x])) (lshiftrt:SI (bswap:SI (reg/v:SI 103 [ val ])) (const_int 16 [0x10] allowing combination of insns 6, 8, 9 and 10 when compiling the following testcase: unsigned int bswap8 (unsigned int val) { return (val & 0x) | ((val & 0xff00) >> 8) | ((val & 0xff) << 8); } to produce: movl%edi, %eax xchgb %ah, %al ret The expansion now always goes through a clobberless form of the bswaphi instruction. The instruction is conditionally converted to a rotate at peephole2 pass. This significantly simplifies bswaphisi2_lowpart insn pattern attributes. PR target/115102 gcc/ChangeLog: * config/i386/i386.md (bswaphi2): Also enable for !TARGET_MOVBE. (*bswaphi2): New insn pattern. (bswaphisi2_lowpart): Rename from bswaphi_lowpart. Rewrite insn RTX to match the expected form of the combine pass. Remove rol{w} alternative and corresponding attributes. (bswsaphisi2_lowpart peephole2): New peephole2 pattern to conditionally convert bswaphisi2_lowpart to rotlhi3_1_slp. (bswapsi2): Update expander for rename. (rotlhi3_1_slp splitter): Conditionally split to bswaphi2. gcc/testsuite/ChangeLog: * gcc.target/i386/pr115102.c: New test. Diff: --- gcc/config/i386/i386.md | 77 +--- gcc/testsuite/gcc.target/i386/pr115102.c | 10 + 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c162cd42386..375654cf74e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -17210,9 +17210,7 @@ (clobber (reg:CC FLAGS_REG))] "reload_completed && (TARGET_USE_XCHGB || optimize_function_for_size_p (cfun))" - [(parallel [(set (strict_low_part (match_dup 0)) - (bswap:HI (match_dup 0))) -(clobber (reg:CC FLAGS_REG))])]) + [(set (match_dup 0) (bswap:HI (match_dup 0)))]) ;; Rotations through carry flag (define_insn "rcrsi2" @@ -20730,12 +20728,11 @@ operands[1] = force_reg (SImode, operands[1]); else { - rtx x = operands[0]; + rtx x = gen_reg_rtx (SImode); - emit_move_insn (x, operands[1]); - emit_insn (gen_bswaphi_lowpart (gen_lowpart (HImode, x))); + emit_insn (gen_bswaphisi2_lowpart (x, operands[1])); emit_insn (gen_rotlsi3 (x, x, GEN_INT (16))); - emit_insn (gen_bswaphi_lowpart (gen_lowpart (HImode, x))); + emit_insn (gen_bswaphisi2_lowpart (operands[0], x)); DONE; } }) @@ -20767,7 +20764,11 @@ (define_expand "bswaphi2" [(set (match_operand:HI 0 "register_operand") (bswap:HI (match_operand:HI 1 "nonimmediate_operand")))] - "TARGET_MOVBE") + "" +{ + if (!TARGET_MOVBE) +operands[1] = force_reg (HImode, operands[1]); +}) (define_insn "*bswaphi2_movbe" [(set (match_operand:HI 0 "nonimmediate_operand" "=Q,r,m") @@ -20788,33 +20789,55 @@ (set_attr "bdver1_decode" "double,*,*") (set_attr "mode" "QI,HI,HI")]) +(define_insn "*bswaphi2" + [(set (match_operand:HI 0 "register_operand" "=Q") + (bswap:HI (match_operand:HI 1 "register_operand" "0")))] + "!TARGET_MOVBE" + "xchg{b}\t{%h0, %b0|%b0, %h0}" + [(set_attr "type" "imov") + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") + (set_attr "bdver1_decode" "double") + (set_attr "mode" "QI")]) + (define_peephole2 [(set (match_operand:HI 0 "general_reg_operand") (bswap:HI (match_dup 0)))] -
Results for 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) testsuite on s390x-ibm-linux-gnu z16
LAST_UPDATED: Thu May 30 17:06:01 UTC 2024 (revision r15-929-g46d931b3dd3) === acats tests === FAIL: cb1010a FAIL: cxa4001 === acats Summary === # of expected passes2326 # of unexpected failures2 Native configuration is s390x-ibm-linux-gnu z16 === gcc tests === Running target unix/-m31 FAIL: gcc.c-torture/execute/920501-4.c -O1 execution test FAIL: gcc.c-torture/execute/920501-4.c -O2 execution test FAIL: gcc.c-torture/execute/920501-4.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.c-torture/execute/920501-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.c-torture/execute/920501-4.c -O3 -g execution test FAIL: gcc.c-torture/execute/920501-4.c -Os execution test FAIL: gcc.c-torture/execute/920501-5.c -O1 execution test FAIL: gcc.c-torture/execute/920501-5.c -O2 execution test FAIL: gcc.c-torture/execute/920501-5.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.c-torture/execute/920501-5.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.c-torture/execute/920501-5.c -O3 -g execution test FAIL: gcc.c-torture/execute/920501-5.c -Os execution test FAIL: gcc.c-torture/execute/920721-4.c -O2 execution test FAIL: gcc.c-torture/execute/920721-4.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.c-torture/execute/920721-4.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.c-torture/execute/920721-4.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gcc.c-torture/execute/920721-4.c -O3 -g execution test FAIL: gcc.c-torture/execute/920721-4.c -Os execution test FAIL: c-c++-common/asan/pointer-compare-1.c -O0 output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -O1 output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -O2 output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -O3 -g output pattern test FAIL: c-c++-common/asan/pointer-compare-1.c -Os output pattern test FAIL: c-c++-common/asan/pointer-subtract-3.c -O0 execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -O1 execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -O2 execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -O3 -g execution test FAIL: c-c++-common/asan/pointer-subtract-3.c -Os execution test FAIL: c-c++-common/asan/pr64820.c -O0 output pattern test FAIL: c-c++-common/asan/pr64820.c -O1 output pattern test FAIL: c-c++-common/asan/pr64820.c -O2 output pattern test FAIL: c-c++-common/asan/pr64820.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test FAIL: c-c++-common/asan/pr64820.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test FAIL: c-c++-common/asan/pr64820.c -O3 -g output pattern test FAIL: c-c++-common/asan/pr64820.c -Os output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O0 output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O1 output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O2 output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -O3 -g output pattern test FAIL: c-c++-common/asan/use-after-return-1.c -Os output pattern test FAIL: c-c++-common/vector-subscript-4.c -Wc++-compat scan-tree-dump-not optimized "vector" FAIL: gcc.dg/auto-init-uninit-17.c unconditional (test for warnings, line 14) FAIL: gcc.dg/gcc-have-sync-compare-and-swap.c (test for excess errors) FAIL: gcc.dg/loop-9.c scan-rtl-dump loop2_invariant "Decided" FAIL: gcc.dg/loop-9.c scan-rtl-dump loop2_invariant "without introducing a new temporary register" FAIL: gcc.dg/lower-subreg-1.c scan-rtl-dump subreg1 "Splitting reg" FAIL: gcc.dg/pr84877.c execution test FAIL: gcc.dg/sms-compare-debug-1.c (test for excess errors) FAIL: gcc.dg/store_merging_5.c scan-tree-dump-times store-merging "MEM [.*]" 1 FAIL: gcc.dg/uninit-17.c unconditional (test for warnings, line 14) FAIL: c-c++-common/goacc/firstprivate-mappings-1.c scan-tree-dump omplower "(?n)#pragma omp target oacc_parallel
[PATCH v3 3/6] btf: refactor and simplify implementation
This patch heavily refactors btfout.cc to take advantage of the structural changes in the prior commits. Now that inter-type references are internally stored as simply pointers, all the painful, brittle, confusing infrastructure that was used in the process of converting CTF type IDs to BTF type IDs can be thrown out. This greatly simplifies the entire process of converting from CTF to BTF, making the code cleaner, easier to read, and easier to maintain. In addition, we no longer need to worry about destructive changes in internal data structures used commonly by CTF and BTF, which allows deleting several ancillary data structures previously used in btfout.cc. This is nearly transparent, but a few improvements have also been made: 1) BTF_KIND_FUNC records are now _always_ constructed at early_finish, allowing us to construct records even for functions which are later inlined by optimizations. DATASEC entries for functions are only constructed at late_finish, to avoid incorrectly generating entries for functions which get inlined. 2) BTF_KIND_VAR records and DATASEC entries for them are now always constructed at (late) finish, which avoids cases where we could incorrectly create records for variables which were completely optimized away. This fixes PR debug/113566 for non-LTO builds. In LTO builds, BTF must be emitted at early_finish, so some VAR records may be emitted for variables which are later optimized away. 3) Some additional assembler comments have been added with more information for debugging. gcc/ * btfout.cc (struct btf_datasec_entry): New. (struct btf_datasec): Add `id' member. Change `entries' to use new struct btf_datasec_entry. (func_map): New hash_map. (max_translated_id): New. (btf_var_ids, btf_id_map, holes, voids, num_vars_added) (num_types_added, num_types_created): Delete. (btf_absolute_var_id, btf_relative_var_id, btf_absolute_func_id) (btf_relative_func_id, btf_absolute_datasec_id, init_btf_id_map) (get_btf_id, set_btf_id, btf_emit_id_p): Delete. (btf_removed_type_p): Delete. (btf_dtd_kind, btf_emit_type_p): New helpers. (btf_fwd_to_enum_p, btf_calc_num_vbytes): Use them. (btf_collect_datasec): Delete. (btf_dtd_postprocess_cb, btf_dvd_emit_preprocess_cb) (btf_dtd_emit_preprocess_cb, btf_emit_preprocess): Delete. (btf_dmd_representable_bitfield_p): Adapt to type reference changes and delete now-unused ctfc argument. (btf_asm_datasec_type_ref): Delete. (btf_asm_type_ref): Adapt to type reference changes, simplify. (btf_asm_type): Likewise. Mark struct/union types with bitfield members. (btf_asm_array): Adapt to data structure changes. (btf_asm_varent): Likewise. (btf_asm_sou_member): Likewise. Ensure non-bitfield members are correctly re-encoded if struct or union contains any bitfield. (btf_asm_func_arg, btf_asm_func_type, btf_asm_datasec_entry) (btf_asm_datasec_type): Adapt to data structure changes. (output_btf_header): Adapt to other changes, simplify type length calculation, add info to assembler comments. (output_btf_vars): Adapt to other changes. (output_btf_strs): Fix overlong lines. (output_asm_btf_sou_fields, output_asm_btf_enum_list) (output_asm_btf_func_args_list, output_asm_btf_vlen_bytes) (output_asm_btf_type, output_btf_types, output_btf_func_types) (output_btf_datasec_types): Adapt to other changes. (btf_init_postprocess): Delete. (btf_output): Change to only perform output. (btf_early_add_const_void, btf_early_add_func_records): New. (btf_early_finish): Use them here. New. (btf_datasec_push_entry): Adapt to data structure changes. (btf_datasec_add_func, btf_datasec_add_var): New. (btf_late_add_func_datasec_entries): New. (btf_emit_variable_p): New helper. (btf_late_add_vars): Use it here. New. (btf_type_list_cb, btf_late_collect_translated_types): New. (btf_late_assign_func_ids, btf_late_assign_var_ids) (btf_late_assign_datasec_ids): New. (btf_finish): Remove unused argument. Call new btf_late* functions and btf_output. (btf_finalize): Adapt to data structure changes. * ctfc.h (struct ctf_dtdef): Convert existing boolean flags to BOOL_BITFIELD and reorder. (struct ctf_dvdef): Add dvd_id member. (btf_finish): Remove argument from prototype. (get_btf_id): Delete prototype. (funcs_traverse_callback, traverse_btf_func_types): Add an explanatory comment. * dwarf2ctf.cc (ctf_debug_finish): Remove unused argument. * dwarf2ctf.h: Analogous change. * dwarf2out.cc: Likewise. --- gcc/btfout.cc| 1254
Re: [Patch, rs6000, aarch64, middle-end] Add implementation for different targets for pair mem fusion
Hi! On Fri, May 31, 2024 at 01:21:44AM +0530, Ajit Agarwal wrote: > Code is implemented with pure virtual functions to interface with target > code. It's not a pure function. A pure function -- by definition -- has no side effects. These things have side effects. What you mean is this is *an implementation* for C++ functions without a generic implementation. An obfuscation some people (like me) would say. But please call things what they are! So not "pure function". That has a meaning, and this isn't it. > * config/aarch64/aarch64-ldp-fusion.cc: Add target specific > implementation of additional virtual functions added in pair_fusion > struct. This does not belong in this patch. Do not send "rs6000" patches that touch anything outside of config/rs6000/ and similar, certainly not in config/something-else/! This would be WAY easier to review (read: AT ALL POSSIBLE) if you included some detailed rationale and design document. Segher
[PATCH v3 5/6] bpf,btf: enable BTF pruning by default for BPF
This patch enables -fprune-btf by default in the BPF backend when generating BTF information, and fixes BPF CO-RE generation when using -fprune-btf. When generating BPF CO-RE information, we must ensure that types used in CO-RE relocations always have sufficient BTF information emited so that the CO-RE relocations can be processed by a BPF loader. The BTF pruning algorithm on its own does not have sufficient information to determine which types are used in a BPF CO-RE relocation, so this information must be supplied by the BPF backend, using a new btf_mark_type_used function. Co-authored-by: Cupertino Miranda gcc/ * btfout.cc (btf_mark_type_used): New. * ctfc.h (btf_mark_type_used): Declare it here. * config/bpf/bpf.cc (bpf_option_override): Enable -fprune-btf by default if -gbtf is enabled. * config/bpf/core-builtins.cc (extra_fn): New typedef. (compute_field_expr): Add callback parameter, and call it if supplied. Fix computation for MEM_REF. (mark_component_type_as_used): New. (bpf_mark_types_as_used): Likewise. (bpf_expand_core_builtin): Call here. * doc/invoke.texi (Debugging Options): Note that -fprune-btf is enabled by default for BPF target when generating BTF. gcc/testsuite/ * gcc.dg/debug/btf/btf-variables-5.c: Add -fno-prune-btf to dg-options. --- gcc/btfout.cc | 22 ++ gcc/config/bpf/bpf.cc | 5 ++ gcc/config/bpf/core-builtins.cc | 71 +-- gcc/ctfc.h| 1 + gcc/doc/invoke.texi | 3 + .../gcc.dg/debug/btf/btf-variables-5.c| 6 +- 6 files changed, 100 insertions(+), 8 deletions(-) diff --git a/gcc/btfout.cc b/gcc/btfout.cc index a7da164f6b31..35d2875e3f61 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -1501,6 +1501,28 @@ btf_late_assign_datasec_ids (ctf_container_ref ctfc) } } + +/* Manually mark that type T is used to ensure it will not be pruned. + Used by the BPF backend when generating BPF CO-RE to mark types used + in CO-RE relocations. */ + +void +btf_mark_type_used (tree t) +{ + /* If we are not going to prune anyway, this is a no-op. */ + if (!flag_prune_btf) +return; + + gcc_assert (TYPE_P (t)); + ctf_container_ref ctfc = ctf_get_tu_ctfc (); + ctf_dtdef_ref dtd = ctf_lookup_tree_type (ctfc, t); + + if (!dtd) +return; + + btf_add_used_type (ctfc, dtd, false, false, true); +} + /* Callback used for assembling the only-used-types list. Note that this is the same as btf_type_list_cb above, but the hash_set traverse requires a different function signature. */ diff --git a/gcc/config/bpf/bpf.cc b/gcc/config/bpf/bpf.cc index dd1bfe38d29b..775730700eba 100644 --- a/gcc/config/bpf/bpf.cc +++ b/gcc/config/bpf/bpf.cc @@ -221,6 +221,11 @@ bpf_option_override (void) && !(target_flags_explicit & MASK_BPF_CORE)) target_flags |= MASK_BPF_CORE; + /* -gbtf implies -fprune-btf for BPF target. */ + if (btf_debuginfo_p ()) +SET_OPTION_IF_UNSET (_options, _options_set, +flag_prune_btf, true); + /* Determine available features from ISA setting (-mcpu=). */ if (bpf_has_jmpext == -1) bpf_has_jmpext = (bpf_isa >= ISA_V2); diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc index 232bebcadbd5..86e2e9d6e39f 100644 --- a/gcc/config/bpf/core-builtins.cc +++ b/gcc/config/bpf/core-builtins.cc @@ -624,13 +624,20 @@ bpf_core_get_index (const tree node, bool *valid) ALLOW_ENTRY_CAST is an input arguments and specifies if the function should consider as valid expressions in which NODE entry is a cast expression (or - tree code nop_expr). */ + tree code nop_expr). + + EXTRA_FN is a callback function to allow extra functionality with this + function traversal. Currently used for marking used type during expand + pass. */ + +typedef void (*extra_fn) (tree); static unsigned char compute_field_expr (tree node, unsigned int *accessors, bool *valid, tree *access_node, - bool allow_entry_cast = true) + bool allow_entry_cast = true, + extra_fn callback = NULL) { unsigned char n = 0; unsigned int fake_accessors[MAX_NR_ACCESSORS]; @@ -647,6 +654,9 @@ compute_field_expr (tree node, unsigned int *accessors, *access_node = node; + if (callback != NULL) +callback (node); + switch (TREE_CODE (node)) { case INDIRECT_REF: @@ -664,17 +674,19 @@ compute_field_expr (tree node, unsigned int *accessors, case COMPONENT_REF: n = compute_field_expr (TREE_OPERAND (node, 0), accessors, valid, - access_node, false); + access_node, false, callback); accessors[n] = bpf_core_get_index (TREE_OPERAND (node,
[PATCH v3 6/6] opts: allow any combination of DWARF, CTF, BTF
Previously it was not supported to generate both CTF and BTF debug info in the same compiler run, as both formats made incompatible changes to the same internal data structures. With the structural change in the prior patches, in particular the guarantee that CTF will always be fully emitted before any BTF translation occurs, there is no longer anything preventing generation of both CTF and BTF at the same time. This patch changes option parsing to allow any combination of -gdwarf, -gctf, and -gbtf at the same time. gcc/ * opts.cc (set_debug_level): Allow any combination of -gdwarf, -gctf and -gbtf at the same time. --- gcc/opts.cc | 20 +++- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/gcc/opts.cc b/gcc/opts.cc index f80d5d4ba8f9..d58bea096a5f 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -3505,21 +3505,15 @@ set_debug_level (uint32_t dinfo, int extended, const char *arg, } else { - /* Make and retain the choice if both CTF and DWARF debug info are to -be generated. */ - if (((dinfo == DWARF2_DEBUG) || (dinfo == CTF_DEBUG)) + /* Any combination of DWARF, CTF and BTF is allowed together. */ + if (((dinfo == DWARF2_DEBUG) || (dinfo == CTF_DEBUG) + || (dinfo == BTF_DEBUG)) && ((opts->x_write_symbols == (DWARF2_DEBUG|CTF_DEBUG)) + || (opts->x_write_symbols == (DWARF2_DEBUG|BTF_DEBUG)) + || (opts->x_write_symbols == (CTF_DEBUG|BTF_DEBUG)) || (opts->x_write_symbols == DWARF2_DEBUG) - || (opts->x_write_symbols == CTF_DEBUG))) - { - opts->x_write_symbols |= dinfo; - opts_set->x_write_symbols |= dinfo; - } - /* However, CTF and BTF are not allowed together at this time. */ - else if (((dinfo == DWARF2_DEBUG) || (dinfo == BTF_DEBUG)) - && ((opts->x_write_symbols == (DWARF2_DEBUG|BTF_DEBUG)) - || (opts->x_write_symbols == DWARF2_DEBUG) - || (opts->x_write_symbols == BTF_DEBUG))) + || (opts->x_write_symbols == CTF_DEBUG) + || (opts->x_write_symbols == BTF_DEBUG))) { opts->x_write_symbols |= dinfo; opts_set->x_write_symbols |= dinfo; -- 2.43.0
[PATCH v3 4/6] btf: add -fprune-btf option
This patch adds a new option, -fprune-btf, to control BTF debug info generation. As the name implies, this option enables a kind of "pruning" of the BTF information before it is emitted. When enabled, rather than emitting all type information translated from DWARF, only information for types directly used in the source program is emitted. The primary purpose of this pruning is to reduce the amount of unnecessary BTF information emitted, especially for BPF programs. It is very common for BPF programs to incldue Linux kernel internal headers in order to have access to kernel data structures. However, doing so often has the side effect of also adding type definitions for a large number of types which are not actually used by nor relevant to the program. In these cases, -fprune-btf commonly reduces the size of the resulting BTF information by 10x or more, as seen on average when compiling Linux kernel BPF selftests. This both slims down the size of the resulting object and reduces the time required by the BPF loader to verify the program and its BTF information. Note that the pruning implemented in this patch follows the same rules as the BTF pruning performed unconditionally by LLVM's BPF backend when generating BTF. In particular, the main sources of pruning are: 1) Only generate BTF for types used by variables and functions at the file scope. Note that with or without pruning, BTF_KIND_VAR entries are only generated for variables present in the final object - unused static variables or variables completely optimized away must not have VAR entries in BTF. 2) Avoid emitting full BTF for struct and union types which are only pointed-to by members of other struct/union types. In these cases, the full BTF_KIND_STRUCT or BTF_KIND_UNION which would normally be emitted is replaced with a BTF_KIND_FWD, as though the underlying type was a forward-declared struct or union type. gcc/ * btfout.cc (btf_used_types): New hash set. (struct btf_fixup): New. (fixups, forwards): New vecs. (btf_output): Calculate num_types depending on flag_prune_btf. (btf_early_finsih): New initialization for flag_prune_btf. (btf_add_used_type): New function. (btf_used_type_list_cb): Likewise. (btf_late_collect_pruned_types): Likewise. (btf_late_add_vars): Handle special case for variables in ".maps" section when generating BTF for BPF CO-RE target. (btf_late_finish): Use btf_late_collect_pruned_types when flag_prune_btf in effect. Move some initialization to btf_early_finish. (btf_finalize): Additional deallocation for flag_prune_btf. * common.opt (fprune-btf): New flag. * ctfc.cc (init_ctf_strtable): Make non-static. * ctfc.h (struct ctf_dtdef): Add visited_children_p boolean flag. (init_ctf_strtable, ctfc_delete_strtab): Make extern. * doc/invoke.texi (Debugging Options): Document -fprune-btf. gcc/testsuite/ * gcc.dg/debug/btf/btf-prune-1.c: New test. * gcc.dg/debug/btf/btf-prune-2.c: Likewise. * gcc.dg/debug/btf/btf-prune-3.c: Likewise. * gcc.dg/debug/btf/btf-prune-maps.c: Likewise. --- gcc/btfout.cc | 359 +- gcc/common.opt| 4 + gcc/ctfc.cc | 2 +- gcc/ctfc.h| 3 + gcc/doc/invoke.texi | 20 + gcc/testsuite/gcc.dg/debug/btf/btf-prune-1.c | 25 ++ gcc/testsuite/gcc.dg/debug/btf/btf-prune-2.c | 33 ++ gcc/testsuite/gcc.dg/debug/btf/btf-prune-3.c | 35 ++ .../gcc.dg/debug/btf/btf-prune-maps.c | 20 + 9 files changed, 494 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-3.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-maps.c diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 32fda14f704b..a7da164f6b31 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -828,7 +828,10 @@ output_btf_types (ctf_container_ref ctfc) { size_t i; size_t num_types; - num_types = ctfc->ctfc_types->elements (); + if (flag_prune_btf) +num_types = max_translated_id; + else +num_types = ctfc->ctfc_types->elements (); if (num_types) { @@ -957,6 +960,212 @@ btf_early_add_func_records (ctf_container_ref ctfc) } } +/* The set of types used directly in the source program, and any types manually + marked as used. This is the set of types which will be emitted when + flag_prune_btf is set. */ +static GTY (()) hash_set *btf_used_types; + +/* Fixup used to avoid unnecessary pointer chasing for types. A fixup is + created when a structure or union member is a pointer to another struct + or union type. In such cases, avoid
[PATCH v3 2/6] ctf: use pointers instead of IDs internally
This patch replaces all inter-type references in the ctfc internal data structures with pointers, rather than the references-by-ID which were used previously. A couple of small updates in the BPF backend are included to make it compatible with the change. This change is only to the in-memory representation of various CTF structures to make them easier to work with in various cases. It is outwardly transparent; there is no change in emitted CTF. gcc/ * btfout.cc (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines to include/btf.h. (btf_dvd_emit_preprocess_cb, btf_emit_preprocess) (btf_dmd_representable_bitfield_p, btf_asm_array, btf_asm_varent) (btf_asm_sou_member, btf_asm_func_arg, btf_init_postprocess): Adapt to structural changes in ctf_* structs. * ctfc.h (struct ctf_dtdef): Add forward declaration. (ctf_dtdef_t, ctf_dtdef_ref): Move typedefs earlier. (struct ctf_arinfo, struct ctf_funcinfo, struct ctf_sliceinfo) (struct ctf_itype, struct ctf_dmdef, struct ctf_func_arg) (struct ctf_dvdef): Use pointers instead of type IDs for references to other types and use typedefs where appropriate. (struct ctf_dtdef): Add ref_type member. (ctf_type_exists): Use pointer instead of type ID. (ctf_add_reftype, ctf_add_enum, ctf_add_slice, ctf_add_float) (ctf_add_integer, ctf_add_unknown, ctf_add_pointer) (ctf_add_array, ctf_add_forward, ctf_add_typedef) (ctf_add_function, ctf_add_sou, ctf_add_enumerator) (ctf_add_variable): Likewise. Return pointer instead of ID. (ctf_lookup_tree_type): Return pointer to type instead of ID. * ctfc.cc: Analogous changes. * ctfout.cc (ctf_asm_type, ctf_asm_slice, ctf_asm_varent) (ctf_asm_sou_lmember, ctf_asm_sou_member, ctf_asm_func_arg) (output_ctf_objt_info): Adapt to changes. * dwarf2ctf.cc (gen_ctf_type, gen_ctf_void_type) (gen_ctf_unknown_type, gen_ctf_base_type, gen_ctf_pointer_type) (gen_ctf_subrange_type, gen_ctf_array_type, gen_ctf_typedef) (gen_ctf_modifier_type, gen_ctf_sou_type, gen_ctf_function_type) (gen_ctf_enumeration_type, gen_ctf_variable, gen_ctf_function) (gen_ctf_type, ctf_do_die): Likewise. * config/bpf/btfext-out.cc (struct btf_ext_core_reloc): Use pointer instead of type ID. (bpf_core_reloc_add, bpf_core_get_sou_member_index) (output_btfext_core_sections): Adapt to above changes. * config/bpf/core-builtins.cc (process_type): Likewise. include/ * btf.h (BTF_VOID_TYPEID, BTF_INIT_TYPEID): Move defines here, from gcc/btfout.cc. --- gcc/btfout.cc | 40 +++--- gcc/config/bpf/btfext-out.cc| 14 +- gcc/config/bpf/core-builtins.cc | 3 +- gcc/ctfc.cc | 139 +- gcc/ctfc.h | 90 ++-- gcc/ctfout.cc | 22 +-- gcc/dwarf2ctf.cc| 244 +++- include/btf.h | 5 + 8 files changed, 278 insertions(+), 279 deletions(-) diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 1b6a9ed811f0..40e8d8c5c01b 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -61,11 +61,6 @@ static char btf_info_section_label[MAX_BTF_LABEL_BYTES]; #define BTF_INFO_SECTION_LABEL "Lbtf" #endif -/* BTF encodes void as type id 0. */ - -#define BTF_VOID_TYPEID 0 -#define BTF_INIT_TYPEID 1 - #define BTF_INVALID_TYPEID 0x /* Mapping of CTF variables to the IDs they will be assigned when they are @@ -626,7 +621,8 @@ btf_dvd_emit_preprocess_cb (ctf_dvdef_ref *slot, ctf_container_ref arg_ctfc) return 1; /* Do not add variables which refer to unsupported types. */ - if (!voids.contains (var->dvd_type) && btf_removed_type_p (var->dvd_type)) + if (!voids.contains (var->dvd_type->dtd_type) + && btf_removed_type_p (var->dvd_type->dtd_type)) return 1; arg_ctfc->ctfc_vars_list[num_vars_added] = var; @@ -716,7 +712,7 @@ btf_emit_preprocess (ctf_container_ref ctfc) static bool btf_dmd_representable_bitfield_p (ctf_container_ref ctfc, ctf_dmdef_t *dmd) { - ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[dmd->dmd_type]; + ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[dmd->dmd_type->dtd_type]; if (CTF_V2_INFO_KIND (ref_type->dtd_data.ctti_info) == CTF_K_SLICE) { @@ -913,8 +909,8 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) static void btf_asm_array (ctf_container_ref ctfc, ctf_arinfo_t arr) { - btf_asm_type_ref ("bta_elem_type", ctfc, arr.ctr_contents); - btf_asm_type_ref ("bta_index_type", ctfc, arr.ctr_index); + btf_asm_type_ref ("bta_elem_type", ctfc, arr.ctr_contents->dtd_type); + btf_asm_type_ref ("bta_index_type", ctfc, arr.ctr_index->dtd_type); dw2_asm_output_data (4, arr.ctr_nelems, "bta_nelems"); } @@ -927,7 +923,7 @@ btf_asm_varent (ctf_container_ref ctfc, ctf_dvdef_ref var)
[PATCH v3 1/6] ctf, btf: restructure CTF/BTF emission
This commit makes some structural changes to the CTF/BTF debug info emission. In particular: a) CTF is new always fully generated and emitted before any BTF-related procedures are run. This means that BTF-related functions can change, even irreversibly, the shared in-memory representation used by the two formats without issue. b) BTF generation has fewer entry points, and is cleanly divided into early_finish and finish. c) BTF is now always emitted at finish (called from dwarf2out_finish), for all targets in non-LTO builds, rather than being emitted at early_finish for targets other than BPF CO-RE. In LTO builds, BTF is emitted at early_finish as before. Note that this change alone does not alter the contents of BTF at all, regardless of whether it would have previously been emitted at early_finish or finish, because the calculation of the BTF to be emitted is not moved by this patch, only the write-out. The changes are transparent to both CTF and BTF emission. gcc/ * btfout.cc (btf_init_postprocess): Rename to... (btf_early_finish): ...this. (btf_output): Rename to... (btf_finish): ...this. * ctfc.h: Analogous changes. * dwarf2ctf.cc (ctf_debug_early_finish): Conditionally call btf_early_finish, or ctf_finalize as appropriate. Emit BTF here for LTO builds. (ctf_debug_finish): Always call btf_finish here if generating BTF info in non-LTO builds. (ctf_debug_finalize, ctf_debug_init_postprocess): Delete. * dwarf2out.cc (dwarf2out_early_finish): Remove call to ctf_debug_init_postprocess. --- gcc/btfout.cc| 28 + gcc/ctfc.h | 4 +-- gcc/dwarf2ctf.cc | 65 +++- gcc/dwarf2out.cc | 2 -- 4 files changed, 50 insertions(+), 49 deletions(-) diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 07f066a47068..1b6a9ed811f0 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -1491,6 +1491,34 @@ btf_finalize (void) tu_ctfc = NULL; } +/* Initial entry point of BTF generation, called at early_finish () after + CTF information has possibly been output. Translate all CTF information + to BTF, and do any processing that must be done early, such as creating + BTF_KIND_FUNC records. */ + +void +btf_early_finish (void) +{ + btf_init_postprocess (); +} + +/* Late entry point for BTF generation, called from dwarf2out_finish (). + Complete and emit BTF information. */ + +void +btf_finish (const char * filename) +{ + btf_output (filename); + + /* If compiling for BPF with CO-RE info, we cannot deallocate until after + CO-RE information is created, which happens very late in BPF backend. + Therefore, the deallocation (i.e. btf_finalize ()) is delayed until + TARGET_ASM_FILE_END for BPF CO-RE. */ + if (!btf_with_core_debuginfo_p ()) +btf_finalize (); +} + + /* Traversal function for all BTF_KIND_FUNC type records. */ bool diff --git a/gcc/ctfc.h b/gcc/ctfc.h index fa188bf2f5a4..e7bd93901cfa 100644 --- a/gcc/ctfc.h +++ b/gcc/ctfc.h @@ -384,8 +384,8 @@ extern void ctf_init (void); extern void ctf_output (const char * filename); extern void ctf_finalize (void); -extern void btf_output (const char * filename); -extern void btf_init_postprocess (void); +extern void btf_early_finish (void); +extern void btf_finish (const char * filename); extern void btf_finalize (void); extern ctf_container_ref ctf_get_tu_ctfc (void); diff --git a/gcc/dwarf2ctf.cc b/gcc/dwarf2ctf.cc index dc59569fe560..8f9e2fada9e3 100644 --- a/gcc/dwarf2ctf.cc +++ b/gcc/dwarf2ctf.cc @@ -933,30 +933,6 @@ gen_ctf_type (ctf_container_ref ctfc, dw_die_ref die) return type_id; } -/* Prepare for output and write out the CTF debug information. */ - -static void -ctf_debug_finalize (const char *filename, bool btf) -{ - if (btf) -{ - btf_output (filename); - /* btf_finalize when compiling BPF applciations gets deallocated by the -BPF target in bpf_file_end. */ - if (btf_debuginfo_p () && !btf_with_core_debuginfo_p ()) - btf_finalize (); -} - - else -{ - /* Emit the collected CTF information. */ - ctf_output (filename); - - /* Reset the CTF state. */ - ctf_finalize (); -} -} - bool ctf_do_die (dw_die_ref die) { @@ -996,27 +972,27 @@ ctf_debug_init (void) add_name_attribute (ctf_unknown_die, "unknown"); } -/* Preprocess the CTF debug information after initialization. */ - -void -ctf_debug_init_postprocess (bool btf) -{ - /* Only BTF requires postprocessing right after init. */ - if (btf) -btf_init_postprocess (); -} - /* Early finish CTF/BTF debug info. */ void ctf_debug_early_finish (const char * filename) { - /* Emit CTF debug info early always. */ - if (ctf_debug_info_level > CTFINFO_LEVEL_NONE - /* Emit BTF debug info early if CO-RE relocations are not -required. */ - ||
[PATCH v3 0/6] btf: refactor and add pruning option
[v2: https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650482.html Changes from v2: - Handle -flto when generating BTF (in patch 1). For LTO builds, BTF is emitted at early_finish as before. For non-LTO builds, BTF will be emitted at (late) finish for all targets. - Move the option parsing change to allow -gbtf and -gctf together to the end of the series. This patch is relatively separate from the other changes, and only depends upon patch 1. - Include Indu's various comments and suggestions throughout the series. - Fix a few GNU style issues with indentation and long lines. - Fix the special handling for .maps section variables in BTF in patch 4. Previously the type marking was too aggressive, and undid nearly all the pruning in some kernel selftests. In one test this fix reduced the emitted BTF from over 6000 types to about 200 types, very similar to clang's output for the same test. ] This patch series signficantly refactors the BTF generation in gcc, making it simpler and easier to understand, extend and maintain. It also introduces an optional algorithm to "prune" BTF information before emission. This pruning is meant to be used for BPF programs, to alleviate the massive bloating of BTF information caused by including Linux kernel internal headers. The pruning is designed to be compatible with the unconditional pruning performed by the LLVM BPF backend when generating BTF information. While the changes are fairly significant, there is no actual change in emitted BTF information (unless pruning is enabled), other than bug fixes and small additions to the assembler debug comments. Patch 1 restructures the emission of CTF and BTF information, with the result that CTF is always completely generated and emitted before any BTF-related procedures are run. BTF emission is moved to late finish for all targets, except when building with -flto. Patch 2 changes the data structures shared by CTF and BTF to use pointers rather than type IDs for all inter-type references. This change is completely transparent to both CTF and BTF. Patch 3 heavily refactors btfout.cc to take advantage of the prior changes and significantly simplify the BTF implementation. The changes are nearly transparent, however some small but important improvements are also made possible by the refactor, such as fixing PR113566 for non-LTO builds. Patch 4 adds a new option to perform pruning of the BTF information before emission. This is intended to be used for BPF programs which often include kernel headers, and in many cases reduces the size of the resulting BTF information by a factor of 10. Patch 5 makes BTF pruning work with BPF CO-RE, and enables the pruning by default in the BPF backend. Patch 6 takes advantage of the prior changes, and removes the restriction on generating both CTF and BTF in the same compiler run, allowing for any combinaion of -gdwarf, -gctf and -gbtf. Tested on x86_64-linux-gnu, and on x86_64-linux-gnu host for bpf-unknown-none target. Also tested by compiling and runninng Linux kernel BPF selftests. No known regressions. David Faust (6): ctf, btf: restructure CTF/BTF emission ctf: use pointers instead of IDs internally btf: refactor and simplify implementation btf: add -fprune-btf option bpf,btf: enable BTF pruning by default for BPF opts: allow any combination of DWARF, CTF, BTF gcc/btfout.cc | 1613 + gcc/common.opt|4 + gcc/config/bpf/bpf.cc |5 + gcc/config/bpf/btfext-out.cc | 14 +- gcc/config/bpf/core-builtins.cc | 74 +- gcc/ctfc.cc | 141 +- gcc/ctfc.h| 113 +- gcc/ctfout.cc | 22 +- gcc/doc/invoke.texi | 23 + gcc/dwarf2ctf.cc | 311 ++-- gcc/dwarf2ctf.h |2 +- gcc/dwarf2out.cc |4 +- gcc/opts.cc | 20 +- gcc/testsuite/gcc.dg/debug/btf/btf-prune-1.c | 25 + gcc/testsuite/gcc.dg/debug/btf/btf-prune-2.c | 33 + gcc/testsuite/gcc.dg/debug/btf/btf-prune-3.c | 35 + .../gcc.dg/debug/btf/btf-prune-maps.c | 20 + .../gcc.dg/debug/btf/btf-variables-5.c|6 +- include/btf.h |5 + 19 files changed, 1420 insertions(+), 1050 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-3.c create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-prune-maps.c -- 2.43.0
[Bug libgomp/109452] omp_init_lock_with_hint() and omp_init_nest_lock_with_hint() are undefined
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109452 Tobias Burnus changed: What|Removed |Added Keywords||openmp Status|UNCONFIRMED |NEW Last reconfirmed||2024-05-30 CC||burnus at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Tobias Burnus --- Confirmed for * omp_init_lock_with_hint * omp_init_nest_lock_with_hint Both have a prototype since ages but no actual implementation. Side note: libgomp.texi would need to be updated as well.
Re: [COMMITTED] ggc: Reduce GGC_QUIRE_SIZE on Solaris/SPARC [PR115031]
> It turns out that this exhaustion of the 32-bit address space happens > due to a combination of three issues: > > * the SPARC pagesize of 8 kB, > > * ggc-page.cc's chunk size of 512 * pagesize, i.e. 4 MB, and > > * mmap adding two 8 kB unmapped red-zone pages to each mapping > > which result in the 4 MB mappings to actually consume 4.5 MB of address > space. > > To avoid this, this patch reduces the chunk size so it remains at 4 MB > even when combined with the red-zone pages, as recommended by mmap(2). Nice investigation! This size is a host parameter rather than a target one though, so config/sparc/sol2.h is probably not the most appropriate place to override it, but I personally do not mind. -- Eric Botcazou
[Bug middle-end/115277] [13/14/15 regression] ICF needs to match loop bound estimates
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115277 --- Comment #3 from Jan Hubicka --- > What about gcc 13? GCC 13 also misoptimizes. Honza
Re: [PATCH 4/4]AArch64: enable new predicate tuning for Neoverse cores.
Tamar Christina writes: > Hi All, > > This enables the new tuning flag for Neoverse V1, Neoverse V2 and Neoverse N2. > It is kept off for generic codegen. > > Note the reason for the +sve even though they are in aarch64-sve.exp is if the > testsuite is ran with a forced SVE off option, e.g. -march=armv8-a+nosve then > the intrinsics end up being disabled because the -march is preferred over the > -mcpu even though the -mcpu comes later. > > This prevents the tests from failing in such runs. IMO we should just skip aarch64-sve.exp if the options explicitly disable SVE. But that's separate work. I'll try it once this patch is in. > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > Ok for master? > > Thanks, > Tamar > > gcc/ChangeLog: > > * config/aarch64/tuning_models/neoversen2.h (neoversen2_tunings): Add > AARCH64_EXTRA_TUNE_AVOID_PRED_RMW. > * config/aarch64/tuning_models/neoversev1.h (neoversev1_tunings): Add > AARCH64_EXTRA_TUNE_AVOID_PRED_RMW. > * config/aarch64/tuning_models/neoversev2.h (neoversev2_tunings): Add > AARCH64_EXTRA_TUNE_AVOID_PRED_RMW. > > gcc/testsuite/ChangeLog: > > * gcc.target/aarch64/sve/pred_clobber_1.c: New test. > * gcc.target/aarch64/sve/pred_clobber_2.c: New test. > * gcc.target/aarch64/sve/pred_clobber_3.c: New test. > * gcc.target/aarch64/sve/pred_clobber_4.c: New test. > > --- > diff --git a/gcc/config/aarch64/tuning_models/neoversen2.h > b/gcc/config/aarch64/tuning_models/neoversen2.h > index > 7e799bbe762fe862e31befed50e54040a7fd1f2f..be9a48ac3adc097f967c217fe09dcac194d7d14f > 100644 > --- a/gcc/config/aarch64/tuning_models/neoversen2.h > +++ b/gcc/config/aarch64/tuning_models/neoversen2.h > @@ -236,7 +236,8 @@ static const struct tune_params neoversen2_tunings = >(AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND > | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS > | AARCH64_EXTRA_TUNE_USE_NEW_VECTOR_COSTS > - | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */ > + | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT > + | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */ >_prefetch_tune, >AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */ >AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */ > diff --git a/gcc/config/aarch64/tuning_models/neoversev1.h > b/gcc/config/aarch64/tuning_models/neoversev1.h > index > 9363f2ad98a5279cc99f2f9b1509ba921d582e84..0fc41ce6a41b3135fa06d2bda1f517fdf4f8dbcf > 100644 > --- a/gcc/config/aarch64/tuning_models/neoversev1.h > +++ b/gcc/config/aarch64/tuning_models/neoversev1.h > @@ -227,7 +227,8 @@ static const struct tune_params neoversev1_tunings = >(AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS > | AARCH64_EXTRA_TUNE_USE_NEW_VECTOR_COSTS > | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT > - | AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND), /* tune_flags. */ > + | AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND > + | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */ >_prefetch_tune, >AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */ >AARCH64_LDP_STP_POLICY_ALWAYS/* stp_policy_model. */ > diff --git a/gcc/config/aarch64/tuning_models/neoversev2.h > b/gcc/config/aarch64/tuning_models/neoversev2.h > index > bc01ed767c9b690504eb98456402df5d9d64eee3..f76e4ef358f7dfb9c7d7b470ea7240eaa2120f8e > 100644 > --- a/gcc/config/aarch64/tuning_models/neoversev2.h > +++ b/gcc/config/aarch64/tuning_models/neoversev2.h > @@ -236,7 +236,8 @@ static const struct tune_params neoversev2_tunings = >(AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND > | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS > | AARCH64_EXTRA_TUNE_USE_NEW_VECTOR_COSTS > - | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */ > + | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT > + | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */ >_prefetch_tune, >AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */ >AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */ > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pred_clobber_1.c > b/gcc/testsuite/gcc.target/aarch64/sve/pred_clobber_1.c > new file mode 100644 > index > ..934a00a38531c5fd4139d99ff33414904b2c104f > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/sve/pred_clobber_1.c > @@ -0,0 +1,22 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -mcpu=neoverse-n2" } */ > +/* { dg-final { check-function-bodies "**" "" } } */ > + > +#pragma GCC target "+sve" > + > +#include > + > +extern void use(svbool_t); > + > +/* > +** foo: > +** ... > +** ptrue p([1-9][0-9]?).b, all Might be better to make this p([1-3]), so that we disallow any registers that would cause a spill. OK with that change, thanks. Richard > +** cmplo p0.h, p\1/z, z0.h, z[0-9]+.h > +** ... > +*/ > +void foo (svuint16_t a, uint16_t b) > +{ > +svbool_t p0 = svcmplt_n_u16 (svptrue_b16 (), a, b); > +
Re: [PATCH 3/4]AArch64: add new alternative with early clobber to patterns
Tamar Christina writes: > [...] > @@ -6651,8 +6661,10 @@ (define_insn "and3" > (and:PRED_ALL (match_operand:PRED_ALL 1 "register_operand") > (match_operand:PRED_ALL 2 "register_operand")))] >"TARGET_SVE" > - {@ [ cons: =0, 1 , 2 ] > - [ Upa , Upa, Upa ] and\t%0.b, %1/z, %2.b, %2.b > + {@ [ cons: =0, 1 , 2 ; attrs: pred_clobber ] > + [ , Upa, Upa; yes ] and\t%0.b, %1/z, %2.b, %2.b > + [ ?Upa, 0 , Upa; yes ] ^ > + [ Upa , Upa, Upa; no ] ^ I think this ought to be: > + {@ [ cons: =0, 1 , 2 ; attrs: pred_clobber ] > + [ , Upa, Upa ; yes ] and\t%0.b, %1/z, %2.b, > %2.b > + [ ?Upa, 0Upa, 0Upa; yes ] ^ > + [ Upa , Upa, Upa ; no ] ^ so that operand 2 can be tied to operand 0 in the worst case. Similarly: >} > ) > > @@ -6679,8 +6691,10 @@ (define_insn "@aarch64_pred__z" > (match_operand:PRED_ALL 3 "register_operand")) > (match_operand:PRED_ALL 1 "register_operand")))] >"TARGET_SVE" > - {@ [ cons: =0, 1 , 2 , 3 ] > - [ Upa , Upa, Upa, Upa ] \t%0.b, %1/z, %2.b, %3.b > + {@ [ cons: =0, 1 , 2 , 3 ; attrs: pred_clobber ] > + [ , Upa, Upa, Upa; yes ] \t%0.b, %1/z, > %2.b, %3.b > + [ ?Upa, 0 , Upa, Upa; yes ] ^ > + [ Upa , Upa, Upa, Upa; no ] ^ >} > ) this would be: {@ [ cons: =0, 1 , 2 , 3 ; attrs: pred_clobber ] [ , Upa , Upa , Upa ; yes ] \t%0.b, %1/z, %2.b, %3.b [ ?Upa, 0Upa, 0Upa, 0Upa; yes ] ^ [ Upa , Upa , Upa, Upa ; no ] ^ } Same idea for the rest. I tried this on: -- #include void use (svbool_t, svbool_t, svbool_t); void f1 (svbool_t p0, svbool_t p1, svbool_t p2, int n, svbool_t *ptr) { while (n--) p2 = svand_z (p0, p1, p2); *ptr = p2; } void f2 (svbool_t p0, svbool_t p1, svbool_t p2, svbool_t *ptr) { *ptr = svand_z (p0, p1, p2); } void f3 (svbool_t p0, svbool_t p1, svbool_t p2, svbool_t *ptr) { use (svand_z (p0, p1, p2), p1, p2); } void f4 (svbool_t p0, svbool_t p1, svbool_t p2, svbool_t *ptr) { use (p0, svand_z (p0, p1, p2), p2); } void f5 (svbool_t p0, svbool_t p1, svbool_t p2, svbool_t *ptr) { use (p0, p1, svand_z (p0, p1, p2)); } -- and it seemed to produce the right output: -- f1: cbz w0, .L2 sub w0, w0, #1 .p2align 5,,15 .L3: and p2.b, p0/z, p1.b, p2.b sub w0, w0, #1 cmn w0, #1 bne .L3 .L2: str p2, [x1] ret f2: and p3.b, p0/z, p1.b, p2.b str p3, [x0] ret f3: and p0.b, p0/z, p1.b, p2.b b use f4: and p1.b, p0/z, p1.b, p2.b b use f5: and p2.b, p0/z, p1.b, p2.b b use -- (with that coming directly from RA, rather than being cleaned up later) > [...] > @@ -10046,8 +10104,10 @@ (define_insn_and_rewrite "*aarch64_brkn_cc" > (match_dup 3)] > UNSPEC_BRKN))] >"TARGET_SVE" > - {@ [ cons: =0, 1 , 2 , 3 ] > - [ Upa , Upa, Upa, 0 ] brkns\t%0.b, %1/z, %2.b, %0.b > + {@ [ cons: =0, 1 , 2 , 3; attrs: pred_clobber ] > + [ , Upa, Upa, 0; yes ] brkns\t%0.b, %1/z, %2.b, > %0.b > + [ ?Upa, 0 , Upa, 0; yes ] ^ > + [ Upa , Upa, Upa, 0; no ] ^ >} >"&& (operands[4] != CONST0_RTX (VNx16BImode) > || operands[5] != CONST0_RTX (VNx16BImode))" Probably best to leave this out. All alternatives require operand 3 to match operand 0. So operands 1 and 2 will only match operand 0 if they're the same as operand 3. In that case it'd be better to allow the sharing rather than force the same value to be stored in two registers. That is, if op1 != op3 && op2 != op3 then we get what we want naturally, regardless of tuning. The same thing would apply to the BRKN instances of : > @@ -10020,8 +10076,10 @@ (define_insn "@aarch64_brk" > (match_operand:VNx16BI 3 "register_operand")] > SVE_BRK_BINARY))] >"TARGET_SVE" > - {@ [ cons: =0, 1 , 2 , 3 ] > - [ Upa , Upa, Upa, ] brk\t%0.b, %1/z, %2.b, > %.b > + {@ [ cons: =0, 1 , 2 , 3; attrs: pred_clobber ] > + [ , Upa, Upa, ; yes ] > brk\t%0.b, %1/z, %2.b, %.b > + [ ?Upa, 0 , Upa, ; yes ] ^ > + [ Upa , Upa, Upa, ; no ] ^ >} > ) but I think we should keep this factoring/abstraction and just add the extra alternatives
Re: [PATCH v10 2/5] Convert references with "counted_by" attributes to/from .ACCESS_WITH_SIZE.
> On May 30, 2024, at 15:43, Joseph Myers wrote: > > On Thu, 30 May 2024, Qing Zhao wrote: > >> In order to make this working, the routine digest_init in c-typeck.cc >> is updated to fold calls to .ACCESS_WITH_SIZE to its first argument >> when require_constant is TRUE. > > The new changes here are OK. Thanks. Qing > > -- > Joseph S. Myers > josmy...@redhat.com >
[ia64] Results for 15.0.0 20240528 (experimental) [master revision 236116068151bbc72aaaf53d0f223fe06f7e3bac] (GCC) testsuite on ia64-t2-linux-gnu
in /dev/shm/gcc-15/src.gcc.ia64-toolchain-3.240529.112623.549077/gcc/gcc.build.lnx/gcc date; time make -j4 check-gcc 2>&1; echo $?; date Thu May 30 09:43:20 UTC 2024 === gcc tests === Running target unix FAIL: gcc.c-torture/compile/attr-retain-1.c -O0 scan-assembler .rodata.*,"aR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O1 scan-assembler .bss.*,"awR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O1 scan-assembler .rodata.*,"aR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O2 scan-assembler .bss.*,"awR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O2 scan-assembler .rodata.*,"aR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O3 -g scan-assembler .bss.*,"awR" FAIL: gcc.c-torture/compile/attr-retain-1.c -O3 -g scan-assembler .rodata.*,"aR" FAIL: gcc.c-torture/compile/attr-retain-1.c -Os scan-assembler .bss.*,"awR" FAIL: gcc.c-torture/compile/attr-retain-1.c -Os scan-assembler .rodata.*,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .bss.used_bss,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .bss.used_bss2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .data.used_data,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .data.used_data2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .rodata.used_rodata,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O0 scan-assembler .rodata.used_rodata2,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .bss.used_bss,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .bss.used_bss2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .data.used_data,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .data.used_data2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .rodata.used_rodata,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O1 scan-assembler .rodata.used_rodata2,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .bss.used_bss,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .bss.used_bss2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .data.used_data,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .data.used_data2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .rodata.used_rodata,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O2 scan-assembler .rodata.used_rodata2,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .bss.used_bss,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .bss.used_bss2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .data.used_data,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .data.used_data2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .rodata.used_rodata,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -O3 -g scan-assembler .rodata.used_rodata2,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .bss.used_bss,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .bss.used_bss2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .data.used_data,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .data.used_data2,"awR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .rodata.used_rodata,"aR" FAIL: gcc.c-torture/compile/attr-retain-2.c -Os scan-assembler .rodata.used_rodata2,"aR" FAIL: gcc.c-torture/compile/pr29201.c -O0 (test for excess errors) FAIL: gcc.c-torture/compile/pr29201.c -O1 (test for excess errors) FAIL: gcc.c-torture/compile/pr29201.c -O2 (test for excess errors) FAIL: gcc.c-torture/compile/pr29201.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) FAIL: gcc.c-torture/compile/pr29201.c -O3 -g (test for excess errors) FAIL: gcc.c-torture/compile/pr29201.c -Os (test for excess errors) WARNING: program timed out FAIL: gcc.c-torture/compile/limits-blockid.c -O3 -g (test for excess errors) FAIL: gcc.c-torture/execute/pr64242.c -O0 execution test FAIL: gcc.c-torture/execute/pr64242.c -O1 execution test FAIL: gcc.c-torture/execute/pr64242.c -O2 execution test FAIL: gcc.c-torture/execute/pr64242.c -O3 -g execution test FAIL: gcc.c-torture/execute/pr64242.c -Os execution test FAIL: gcc.c-torture/execute/pr84521.c -O0 execution test FAIL: gcc.c-torture/execute/pr84521.c -O1 execution test FAIL: gcc.c-torture/execute/pr84521.c -O2 execution test FAIL: gcc.c-torture/execute/pr84521.c -O3 -g execution test FAIL: gcc.c-torture/execute/pr84521.c -Os execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O0 execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c
[Patch, rs6000, aarch64, middle-end] Add implementation for different targets for pair mem fusion
Hello All: Common infrastructure using generic code for pair mem fusion of different targets. rs6000 target specific specific code implements virtual functions defined by generic code. Code is implemented with pure virtual functions to interface with target code. Target specific code are added in rs6000-mem-fusion.cc and additional virtual function implementation required for rs6000 are added in aarch64-ldp-fusion.cc. Bootstrapped and regtested for aarch64-linux-gnu and powerpc64-linux-gnu. Thanks & Regards Ajit aarch64, rs6000, middle-end: Add implementation for different targets for pair mem fusion Common infrastructure using generic code for pair mem fusion of different targets. rs6000 target specific specific code implements virtual functions defined by generic code. Code is implemented with pure virtual functions to interface with target code. Target specific code are added in rs6000-mem-fusion.cc and additional virtual function implementation required for rs6000 are added in aarch64-ldp-fusion.cc. 2024-05-31 Ajit Kumar Agarwal gcc/ChangeLog: * config/aarch64/aarch64-ldp-fusion.cc: Add target specific implementation of additional virtual functions added in pair_fusion struct. * config/rs6000/rs6000-passes.def: New mem fusion pass before pass_early_remat. * config/rs6000/rs6000-mem-fusion.cc: Add new pass. Add target specific implementation using pure virtual functions. * config.gcc: Add new object file. * config/rs6000/rs6000-protos.h: Add new prototype for mem fusion pass. * config/rs6000/t-rs6000: Add new rule. * rtl-ssa/accesses.h: Moved set_is_live_out_use as public from private. gcc/testsuite/ChangeLog: * g++.target/powerpc/me-fusion.C: New test. * g++.target/powerpc/mem-fusion-1.C: New test. * gcc.target/powerpc/mma-builtin-1.c: Modify test. --- gcc/config.gcc| 2 + gcc/config/aarch64/aarch64-ldp-fusion.cc | 23 + gcc/config/rs6000/rs6000-mem-fusion.cc| 629 ++ gcc/config/rs6000/rs6000-passes.def | 4 +- gcc/config/rs6000/rs6000-protos.h | 1 + gcc/config/rs6000/t-rs6000| 5 + gcc/pair-fusion.cc| 18 +- gcc/pair-fusion.h | 20 + gcc/rtl-ssa/accesses.h| 2 +- .../g++.target/powerpc/mem-fusion-1.C | 22 + gcc/testsuite/g++.target/powerpc/mem-fusion.C | 15 + .../gcc.target/powerpc/mma-builtin-1.c| 4 +- 12 files changed, 740 insertions(+), 5 deletions(-) create mode 100644 gcc/config/rs6000/rs6000-mem-fusion.cc create mode 100644 gcc/testsuite/g++.target/powerpc/mem-fusion-1.C create mode 100644 gcc/testsuite/g++.target/powerpc/mem-fusion.C diff --git a/gcc/config.gcc b/gcc/config.gcc index a37113bd00a..1beabc35d52 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -524,6 +524,7 @@ powerpc*-*-*) extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o" extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o" extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o" + extra_objs="${extra_objs} rs6000-mem-fusion.o" extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h" extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h" extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h" @@ -560,6 +561,7 @@ rs6000*-*-*) extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt" extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o" extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o" + extra_objs="${extra_objs} rs6000-mem-fusion.o" target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc" target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc" ;; diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc index 0af927231d3..784cdc3937c 100644 --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc @@ -104,6 +104,29 @@ struct aarch64_pair_fusion : public pair_fusion bool load_p) override final; rtx destructure_pair (rtx regs[2], rtx pattern, bool load_p) override final; + + bool should_handle_unordered_insns (rtl_ssa::insn_info *, + rtl_ssa::insn_info *) override final + { +return true; + } + + bool fuseable_store_p (rtl_ssa::insn_info *, +rtl_ssa::insn_info *) override final + { +return true; + } + + bool fuseable_load_p (rtl_ssa::insn_info *) override final + { +return true; + } + + void set_multiword_subreg (rtl_ssa::insn_info *, rtl_ssa::insn_info *, +bool)
Re: [PATCH v10 2/5] Convert references with "counted_by" attributes to/from .ACCESS_WITH_SIZE.
On Thu, 30 May 2024, Qing Zhao wrote: > In order to make this working, the routine digest_init in c-typeck.cc > is updated to fold calls to .ACCESS_WITH_SIZE to its first argument > when require_constant is TRUE. The new changes here are OK. -- Joseph S. Myers josmy...@redhat.com
Results for 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) testsuite on x86_64-apple-darwin21
LAST_UPDATED: Sat 25 May 2024 00:19:36 UTC (revision r12-10471-ge11d3dd4708e) === acats tests === FAIL: c250002 === acats Summary === # of expected passes2327 # of unexpected failures1 Native configuration is x86_64-apple-darwin21 === g++ tests === Running target unix FAIL: g++.dg/init/array61.C -std=c++14 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++17 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++20 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) === g++ Summary === # of expected passes225001 # of unexpected failures33 # of expected failures 2085 # of unsupported tests 10740 /scratch/12-mon-rosetta/gcc-12/gcc/xg++ version 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) === gcc tests === Running target unix FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "strlen" 0 FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "_not_eliminated_" 0 FAIL: gcc.dg/strlenopt-80.c scan-tree-dump-times optimized "failure_on_line (" 0 FAIL: gcc.dg/strlenopt-82.c scan-tree-dump-times optimized "call_in_true_branch_not_eliminated_" 0 FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -flto FAIL: gcc.dg/lto/pr61526 c_lto_pr61526_0.o-c_lto_pr61526_1.o link, -fPIC -flto -flto-partition=1to1 FAIL: gcc.dg/lto/pr99849 c_lto_pr99849_0.o-c_lto_pr99849_0.o link, -flto -flto-partition=1to1 -O2 -Wno-incompatible-pointer-types -Wno-discarded-qualifiers -fPIC XPASS: gcc.dg/tree-ssa/pr91091-2.c scan-tree-dump-times fre1 "x = " 1 XPASS:
Results for 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) testsuite on x86_64-apple-darwin20
LAST_UPDATED: Wed 29 May 2024 00:21:40 UTC (revision r13-8807-gebca6006f444) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin20 === g++ tests === Running target unix FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) === g++ Summary === # of expected passes233563 # of unexpected failures32 # of expected failures 2088 # of unsupported tests 11253 /scratch/11-sur/gcc-13/gcc/xg++ version 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) === gcc tests === Running target unix FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "_not_eliminated_" 0 FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "strlen" 0 FAIL: gcc.dg/strlenopt-80.c scan-tree-dump-times optimized "failure_on_line (" 0 FAIL: gcc.dg/strlenopt-82.c scan-tree-dump-times optimized "call_in_true_branch_not_eliminated_" 0 FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -flto FAIL: gcc.dg/lto/pr61526 c_lto_pr61526_0.o-c_lto_pr61526_1.o link, -fPIC -flto -flto-partition=1to1 FAIL: gcc.dg/lto/pr99849 c_lto_pr99849_0.o-c_lto_pr99849_0.o link, -flto -flto-partition=1to1 -O2 -Wno-incompatible-pointer-types -Wno-discarded-qualifiers -fPIC FAIL: gcc.dg/plugin/crash-test-write-though-null-sarif.c -fplugin=./crash_test_plugin.so scan-sarif-file "text": "Segmentation fault" XPASS:
Results for 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) testsuite on x86_64-apple-darwin23
LAST_UPDATED: Sat 25 May 2024 00:19:36 UTC (revision r12-10471-ge11d3dd4708e) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin23 === g++ tests === Running target unix FAIL: g++.dg/init/array61.C -std=c++14 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++17 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/init/array61.C -std=c++20 scan-tree-dump-times gimple "item::item" 1 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++98 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++14 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++17 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++20 (test for excess errors) FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:20024) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) === g++ Summary === # of expected passes220706 # of unexpected failures37 # of expected failures 1941 # of unsupported tests 10342 /scratch/14-son/gcc-12/gcc/xg++ version 12.3.1 20240525 [releases/gcc-12 revision r12-10471-ge11d3dd4708e] (GCC) === gcc tests === Running target unix FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -O0 (test for excess errors) UNRESOLVED: gcc.dg/atomic/c11-atomic-exec-4.c -O0 compilation failed to produce executable FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -O1 (test for excess errors) UNRESOLVED: gcc.dg/atomic/c11-atomic-exec-4.c -O1 compilation failed to produce executable FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -O2 (test for excess errors) UNRESOLVED: gcc.dg/atomic/c11-atomic-exec-4.c -O2 compilation failed to produce executable FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) UNRESOLVED: gcc.dg/atomic/c11-atomic-exec-4.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions compilation failed to produce executable FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -O3 -g (test for excess errors) UNRESOLVED: gcc.dg/atomic/c11-atomic-exec-4.c -O3 -g compilation failed to produce executable FAIL: gcc.dg/atomic/c11-atomic-exec-4.c -Os (test
Results for 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) testsuite on i686-apple-darwin9
LAST_UPDATED: Wed 29 May 2024 00:21:40 UTC (revision r13-8807-gebca6006f444) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is i686-apple-darwin9 === g++ tests === Running target unix/-m32 FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/ext/pr84828.C -std=gnu++14 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++17 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++20 (test for excess errors) FAIL: g++.dg/ext/pr84828.C -std=gnu++98 (test for excess errors) XPASS: g++.dg/ext/sync-4.C -std=gnu++14 execution test XPASS: g++.dg/ext/sync-4.C -std=gnu++17 execution test XPASS: g++.dg/ext/sync-4.C -std=gnu++20 execution test XPASS: g++.dg/ext/sync-4.C -std=gnu++98 execution test FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/other/pr35504.C -std=c++14 execution test FAIL: g++.dg/other/pr35504.C -std=c++17 execution test FAIL: g++.dg/other/pr35504.C -std=c++20 execution test FAIL: g++.dg/other/pr35504.C -std=c++98 execution test FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++14 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++17 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++20 (test for excess errors) FAIL: c-c++-common/goacc/kernels-loop-g.c -std=c++98 (test for excess errors) FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local-order2.C -std=c++14 execution test FAIL: g++.dg/tls/thread_local-order2.C -std=c++17 execution test FAIL: g++.dg/tls/thread_local-order2.C -std=c++20 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr90424-1.C -std=gnu++14 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-1.C -std=gnu++14 scan-tree-dump-times optimized "MEM" 9 FAIL: g++.target/i386/pr90424-1.C -std=gnu++17 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-1.C -std=gnu++17 scan-tree-dump-times optimized "MEM" 9 FAIL: g++.target/i386/pr90424-1.C -std=gnu++20 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-1.C -std=gnu++20 scan-tree-dump-times optimized "MEM" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++14 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++14 scan-tree-dump-times optimized "MEM" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++17 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++17 scan-tree-dump-times optimized "MEM" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++20 scan-tree-dump-times optimized "BIT_INSERT_EXPR" 9 FAIL: g++.target/i386/pr90424-2.C -std=gnu++20 scan-tree-dump-times optimized "MEM" 9 === g++ Summary for unix/-m32 === # of expected passes226752 # of unexpected failures51 # of unexpected successes 4 # of expected failures
Results for 13.3.0 (GCC) testsuite on x86_64-apple-darwin18
LAST_UPDATED: Wed May 22 19:09:47 UTC 2024 (revision r13-8870-gcb743fb20ecd) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin18 === g++ tests === Running target unix FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/contracts/contracts10.C execution test FAIL: g++.dg/contracts/contracts18.C execution test FAIL: g++.dg/contracts/contracts19.C execution test FAIL: g++.dg/contracts/contracts2.C execution test FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) === g++ Summary === # of expected passes233733 # of unexpected failures35 # of expected failures 2088 # of unsupported tests 11235 /scratch/10-14-moj/gcc-13-wip/gcc/xg++ version 13.3.0 (GCC) === gcc tests === Running target unix FAIL: c-c++-common/asan/alloca_big_alignment.c -Os output pattern test FAIL: c-c++-common/asan/alloca_detect_custom_size.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_partial.c -Os output pattern test FAIL: c-c++-common/asan/alloca_overflow_right.c -Os output pattern test FAIL: c-c++-common/asan/alloca_underflow_left.c -Os output pattern test FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -flto FAIL: gcc.dg/lto/pr61526 c_lto_pr61526_0.o-c_lto_pr61526_1.o link, -fPIC -flto -flto-partition=1to1 FAIL: gcc.dg/lto/pr99849 c_lto_pr99849_0.o-c_lto_pr99849_0.o link, -flto -flto-partition=1to1 -O2
Results for 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) testsuite on x86_64-apple-darwin21
LAST_UPDATED: Wed 29 May 2024 00:21:40 UTC (revision r13-8807-gebca6006f444) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin21 === g++ tests === Running target unix FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) === g++ Summary === # of expected passes233563 # of unexpected failures32 # of expected failures 2088 # of unsupported tests 11253 /scratch/12-mon/gcc-13/gcc/xg++ version 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) === gcc tests === Running target unix FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -flto FAIL: gcc.dg/lto/pr61526 c_lto_pr61526_0.o-c_lto_pr61526_1.o link, -fPIC -flto -flto-partition=1to1 FAIL: gcc.dg/lto/pr99849 c_lto_pr99849_0.o-c_lto_pr99849_0.o link, -flto -flto-partition=1to1 -O2 -Wno-incompatible-pointer-types -Wno-discarded-qualifiers -fPIC FAIL: gcc.dg/plugin/crash-test-write-though-null-sarif.c -fplugin=./crash_test_plugin.so scan-sarif-file "text": "Segmentation fault" XPASS: gcc.dg/plugin/taint-CVE-2011-0521-5-fixed.c -fplugin=./analyzer_kernel_plugin.so (test for bogus messages, line 39) FAIL: gcc.dg/plugin/taint-CVE-2011-0521-5.c -fplugin=./analyzer_kernel_plugin.so (test for warnings, line 39) FAIL: gcc.dg/plugin/taint-CVE-2011-0521-6.c -fplugin=./analyzer_kernel_plugin.so (test for warnings, line 36)
Results for 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) testsuite on x86_64-apple-darwin23
LAST_UPDATED: Wed 29 May 2024 00:21:40 UTC (revision r13-8807-gebca6006f444) === acats tests === === acats Summary === # of expected passes2328 # of unexpected failures0 Native configuration is x86_64-apple-darwin23 === g++ tests === Running target unix FAIL: g++.dg/debug/dwarf2/utf-1.C -std=gnu++20 scan-assembler-times DW_AT_encoding (0x10) 3 FAIL: g++.dg/ipa/pr67056.C scan-ipa-dump cp "Speculative outer type:struct CompositeClass" FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++14 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++17 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++20 (test for excess errors) FAIL: g++.dg/other/darwin-cfstring1.C -std=gnu++98 (test for excess errors) FAIL: g++.dg/lto/pr108772 cp_lto_pr108772_0.o-cp_lto_pr108772_0.o link, -flto -fPIC -shared -O1 -fimplicit-constexpr -g1 FAIL: g++.dg/lto/pr65276 cp_lto_pr65276_0.o-cp_lto_pr65276_1.o link, -flto -O0 -std=c++11 FAIL: g++.dg/lto/pr85405 cp_lto_pr85405_0.o-cp_lto_pr85405_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85405b cp_lto_pr85405b_0.o-cp_lto_pr85405b_1.o link, -fPIC -shared -flto FAIL: g++.dg/lto/pr85655 cp_lto_pr85655_0.o-cp_lto_pr85655_0.o link, -O2 -fPIC -shared -flto FAIL: g++.dg/lto/pr86523-3 cp_lto_pr86523-3_0.o-cp_lto_pr86523-3_0.o link, -fPIC -flto -g -shared FAIL: g++.dg/lto/pr86585 cp_lto_pr86585_0.o-cp_lto_pr86585_1.o link, -flto -g -nostdlib -shared -fPIC FAIL: g++.dg/lto/pr87295 cp_lto_pr87295_0.o assemble, -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 FAIL: g++.dg/lto/pr87906 cp_lto_pr87906_0.o-cp_lto_pr87906_1.o link, -O -fPIC -flto FAIL: g++.dg/lto/pr88046 cp_lto_pr88046_0.o-cp_lto_pr88046_0.o link, -O2 -fPIC -flto FAIL: g++.dg/lto/pr88758 cp_lto_pr88758_0.o-cp_lto_pr88758_1.o link, -O3 -fPIC -flto -shared FAIL: g++.dg/lto/pr89330 cp_lto_pr89330_0.o-cp_lto_pr89330_1.o link, -O3 -g -flto -shared -fPIC -Wno-odr FAIL: g++.dg/lto/pr91574 cp_lto_pr91574_0.o-cp_lto_pr91574_0.o link, -fPIC -flto -O2 FAIL: g++.dg/lto/pr92609 (test for LTO warnings, pr92609_0.C line 75) FAIL: g++.dg/lto/pr92609 cp_lto_pr92609_0.o-cp_lto_pr92609_1.o link, -fPIC -flto FAIL: g++.dg/lto/pr93166 cp_lto_pr93166_0.o-cp_lto_pr93166_0.o link, -fPIC -O2 -flto -fvisibility=hidden FAIL: g++.dg/tls/thread_local13.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local13.C -std=gnu++20 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++14 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++17 execution test FAIL: g++.dg/tls/thread_local14.C -std=gnu++20 execution test FAIL: g++.target/i386/pr105980.C -std=gnu++14 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++14 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++17 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++20 (test for excess errors) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (internal compiler error: in insn_default_length, at config/i386/i386.md:21240) FAIL: g++.target/i386/pr105980.C -std=gnu++98 (test for excess errors) === g++ Summary === # of expected passes228999 # of unexpected failures36 # of expected failures 2088 # of unsupported tests 10855 /scratch/14-son/gcc-13/gcc/xg++ version 13.3.1 20240529 [releases/gcc-13 revision r13-8807-gebca6006f444] (GCC) === gcc tests === Running target unix FAIL: gcc.dg/debug/dwarf2/dwarf2-macro.c scan-assembler Start new file FAIL: gcc.dg/debug/dwarf2/dwarf2-macro2.c scan-assembler At line number 0 FAIL: gcc.dg/ira-loop-pressure.c scan-rtl-dump loop2_invariant "Decided to move invariant" FAIL: gcc.dg/pr97172-2.c (test for excess errors) FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1 FAIL: gcc-dg-lto-modref-3-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc-dg-lto-modref-4-01.exe scan-wpa-ipa-dump modref "parm 1 flags: no_direct_clobber no_direct_escape" FAIL: gcc.dg/lto/modref-3 c_lto_modref-3_0.o-c_lto_modref-3_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -fno-ipa-cp -flto FAIL: gcc.dg/lto/modref-4 c_lto_modref-4_0.o-c_lto_modref-4_1.o execute -O2 -flto-partition=max -fdump-ipa-modref -fno-ipa-sra -flto FAIL: gcc.dg/lto/pr61526 c_lto_pr61526_0.o-c_lto_pr61526_1.o link, -fPIC -flto -flto-partition=1to1 FAIL: gcc.dg/lto/pr99849 c_lto_pr99849_0.o-c_lto_pr99849_0.o link, -flto -flto-partition=1to1 -O2
[Bug d/115295] [15 regression] Various gdc testsuite regressions
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115295 Rainer Orth changed: What|Removed |Added Target Milestone|--- |15.0
[Bug d/115295] New: [15 regression] Various gdc testsuite regressions
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115295 Bug ID: 115295 Summary: [15 regression] Various gdc testsuite regressions Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: d Assignee: ibuclaw at gdcproject dot org Reporter: ro at gcc dot gnu.org Target Milestone: --- Between 20240529 (18f477980c8597fe3dca2c2e8bd533c0c2b17aa6) and 20240530 (71899d6b4e18145f005046681208db0137c95ede), quite a number of gdc.* tests regressed: +FAIL: gdc.dg/attr_module.d(test for warnings, line 12) +FAIL: gdc.dg/attr_module.d(test for warnings, line 18) +FAIL: gdc.dg/attr_module.d(test for warnings, line 24) +FAIL: gdc.dg/attr_module.d(test for warnings, line 36) +FAIL: gdc.dg/attr_module.d (test for excess errors) Excess errors: /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:6:2: error: undefined identifier 'value_ignored' /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:12:2: error: undefined identifier 'type_symbol' /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:18:2: error: undefined identifier 'template_symbol' /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:24:2: error: undefined identifier 'struct_wrong_field' /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:30:2: error: undefined identifier 'struct_void_init' /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/attr_module.d:36:2: error: undefined identifier 'unknown_attribute' +FAIL: gdc.dg/gdc231.d (test for excess errors) Excess errors: /vol/gcc/src/hg/master/local/gcc/testsuite/gdc.dg/gdc231.d:5:8: error: unable to read module 'gdc231' import path[0] = /var/gcc/regression/master/11.4-gcc/build/i386-pc-solaris2.11/libphobos/libdruntime import path[1] = /vol/gcc/src/hg/master/local/libphobos/libdruntime import path[2] = /vol/gcc/src/hg/master/local/libphobos/src +FAIL: gdc.dg/gdc253a.d (test for excess errors) +FAIL: gdc.dg/gdc27.d (test for excess errors) +FAIL: gdc.dg/pr108050.d (test for excess errors) +FAIL: gdc.test/compilable/test16348.d output-exists test16348.s +FAIL: gdc.test/compilable/test17541.d output-exists test17541.s compilable/test17541.d:8:8: error: unable to read module 'two' compilable/test17541.d:8:8: note: Expected 'two.d' or 'two/package.d' in one of the following import paths: import path[0] = /var/gcc/regression/master/11.4-gcc/build/i386-pc-solaris2.11/libphobos/libdruntime import path[1] = /vol/gcc/src/hg/master/local/libphobos/libdruntime import path[2] = /vol/gcc/src/hg/master/local/libphobos/src import path[3] = /var/gcc/regression/master/11.4-gcc/build/gcc/testsuite/gdc3/compilable compiler exited with status 1 +FAIL: gdc.test/fail_compilation/diag4479.d output-exists-not diag4479.o +FAIL: gdc.test/fail_compilation/fail11453a.d output-exists-not fail11453a.o +FAIL: gdc.test/fail_compilation/fail11453b.d output-exists-not fail11453b.o +FAIL: gdc.test/fail_compilation/fail18938.d output-exists-not fail18938.o +FAIL: gdc.test/fail_compilation/fail19911b.d output-exists-not fail19911b.o +FAIL: gdc.test/fail_compilation/fail23109.d output-exists-not fail23109.o +FAIL: gdc.test/fail_compilation/ice10598.d output-exists-not ice10598.o +FAIL: gdc.test/fail_compilation/ice11136.d output-exists-not ice11136.o +FAIL: gdc.test/fail_compilation/ice14116.d output-exists-not ice14116.o +FAIL: gdc.test/fail_compilation/no_Throwable.d output-exists-not no_Throwable.o +FAIL: gdc.test/fail_compilation/no_TypeInfo.d output-exists-not no_TypeInfo.o +FAIL: gdc.test/fail_compilation/verifyhookexist.d output-exists-not verifyhookexist.o I'm seeing this on at least Solaris/x86 (32 and 64-bit) and Linux/x86_64 (64 and 32-bit).
[Bug testsuite/115294] [15 regression] dg-additional-files-options change broke several testsuites
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115294 Rainer Orth changed: What|Removed |Added Target Milestone|--- |15.0
[Bug testsuite/115294] New: [15 regression] dg-additional-files-options change broke several testsuites
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115294 Bug ID: 115294 Summary: [15 regression] dg-additional-files-options change broke several testsuites Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: testsuite Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: aoliva at gcc dot gnu.org Target Milestone: --- Between 20240529 (18f477980c8597fe3dca2c2e8bd533c0c2b17aa6) and 20240530 (71899d6b4e18145f005046681208db0137c95ede), several testsuite results were lost completely. libatomic, libgomp, libitm, and libphobos are affected. In each case, the test logs show a variation of ERROR: tcl error sourcing /vol/gcc/src/hg/master/local/libatomic/testsuite/../../gcc/testsuite/lib/gcc-dg.exp. wrong # args: should be "dg-additional-files-options options source dest type" while executing "check_cached_effective_target $prop { eval [list check_no_compiler_messages_nocache $prop] $args }" (procedure "check_no_compiler_messages" line 2) invoked from within "check_no_compiler_messages lto object { void foo (void) { } } "-flto"" (procedure "check_effective_target_lto" line 11) invoked from within "check_effective_target_lto" invoked from within "if [info exists TORTURE_OPTIONS] { set DG_TORTURE_OPTIONS $TORTURE_OPTIONS } else { # It is theoretically beneficial to group all of the O2/O3..." (file "/vol/gcc/src/hg/master/local/libatomic/testsuite/../../gcc/testsuite/lib/gcc-dg.exp" line 82) invoked from within "source /vol/gcc/src/hg/master/local/libatomic/testsuite/../../gcc/testsuite/lib/gcc-dg.exp" ("uplevel" body line 1) invoked from within "uplevel #0 source /vol/gcc/src/hg/master/local/libatomic/testsuite/../../gcc/testsuite/lib/gcc-dg.exp" invoked from within "catch "uplevel #0 source $file"" I'm seeing this on both i386-pc-solaris2.11 and x86_64-pc-linux-gnu; most likely this happens everywhere.
Results for 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) testsuite on s390x-ibm-linux-gnu default
table-jump-inline-z10.c scan-assembler-times exrl 1 FAIL: gcc.target/s390/nobp-table-jump-inline-z900.c scan-assembler section\\t.s390_indirect_jump FAIL: gcc.target/s390/nobp-table-jump-inline-z900.c scan-assembler-times \\tex\\t 1 FAIL: gcc.target/s390/nobp-table-jump-z10.c scan-assembler section\\t.s390_indirect_jump FAIL: gcc.target/s390/nobp-table-jump-z10.c scan-assembler-times exrl 1 FAIL: gcc.target/s390/nobp-table-jump-z900.c scan-assembler section\\t.s390_indirect_jump FAIL: gcc.target/s390/nobp-table-jump-z900.c scan-assembler-times ex\\t 1 FAIL: gcc.target/s390/risbg-ll-1.c scan-assembler f42:\\n\\tsllg\\t%r2,%r2,63\\n\\tsrag\\t%r2,%r2,63\\n\\tllgcr\\t%r2,%r2 FAIL: gcc.target/s390/vector/align-1.c scan-assembler-times vl\\t%v[0-9]*,[0-9]*(%r[0-9]*),3\\n 1 FAIL: gcc.target/s390/vector/align-1.c scan-assembler-times vst\\t%v[0-9]*,[0-9]*(%r[0-9]*),3\\n 1 FAIL: gcc.target/s390/vector/vec-abi-vararg-1.c scan-assembler ld\\t%v[0-9]*,368(%r15) FAIL: gcc.target/s390/vector/vec-abi-vararg-1.c scan-assembler ld\\t%v[0-9]*,392(%r15) FAIL: gcc.target/s390/vector/vec-abi-vararg-1.c scan-assembler vl\\t%v[0-9]*,352(%r15) FAIL: gcc.target/s390/vector/vec-abi-vararg-1.c scan-assembler vl\\t%v[0-9]*,376(%r15) === gcc Summary for unix/-m64 === # of expected passes181232 # of unexpected failures176 # of unexpected successes 17 # of expected failures 1468 # of unsupported tests 4322 === gcc Summary === # of expected passes359378 # of unexpected failures357 # of unexpected successes 31 # of expected failures 2937 # of unsupported tests 9262 -default/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-929-g46d931b3dd3] (GCC) === gdc tests === Running target unix/-m31 FAIL: gdc.dg/attr_module.d(test for warnings, line 12) FAIL: gdc.dg/attr_module.d(test for warnings, line 18) FAIL: gdc.dg/attr_module.d(test for warnings, line 24) FAIL: gdc.dg/attr_module.d(test for warnings, line 36) FAIL: gdc.dg/attr_module.d (test for excess errors) FAIL: gdc.dg/gdc231.d (test for excess errors) FAIL: gdc.dg/gdc253a.d (test for excess errors) FAIL: gdc.dg/gdc27.d (test for excess errors) FAIL: gdc.dg/pr108050.d (test for excess errors) FAIL: gdc.test/compilable/test16348.d output-exists test16348.s FAIL: gdc.test/compilable/test17541.d output-exists test17541.s FAIL: gdc.test/fail_compilation/diag4479.d output-exists-not diag4479.o FAIL: gdc.test/fail_compilation/fail11453a.d output-exists-not fail11453a.o FAIL: gdc.test/fail_compilation/fail11453b.d output-exists-not fail11453b.o FAIL: gdc.test/fail_compilation/fail18938.d output-exists-not fail18938.o FAIL: gdc.test/fail_compilation/fail19911b.d output-exists-not fail19911b.o FAIL: gdc.test/fail_compilation/fail23109.d output-exists-not fail23109.o FAIL: gdc.test/fail_compilation/ice10598.d output-exists-not ice10598.o FAIL: gdc.test/fail_compilation/ice11136.d output-exists-not ice11136.o FAIL: gdc.test/fail_compilation/ice14116.d output-exists-not ice14116.o FAIL: gdc.test/fail_compilation/no_Throwable.d output-exists-not no_Throwable.o FAIL: gdc.test/fail_compilation/no_TypeInfo.d output-exists-not no_TypeInfo.o FAIL: gdc.test/fail_compilation/verifyhookexist.d output-exists-not verifyhookexist.o FAIL: gdc.test/runnable/test34.d execution test FAIL: gdc.test/runnable/test34.d -shared-libphobos execution test FAIL: gdc.test/runnable/test42.d execution test FAIL: gdc.test/runnable/test42.d -shared-libphobos execution test FAIL: gdc.test/runnable/xtest46.d execution test FAIL: gdc.test/runnable/xtest46.d -shared-libphobos execution test FAIL: gdc.test/runnable/xtest46_gc.d execution test FAIL: gdc.test/runnable/xtest46_gc.d -shared-libphobos execution test UNRESOLVED: gdc.test/runnable_cxx/cpp_stdlib.d compilation failed to produce executable UNRESOLVED: gdc.test/runnable_cxx/cpp_stdlib.d -shared-libphobos compilation failed to produce executable FAIL: gdc.test/runnable_cxx/cppa.d execution test FAIL: gdc.test/runnable_cxx/cppa.d -g execution test FAIL: gdc.test/runnable_cxx/cppa.d -g -shared-libphobos execution test FAIL: gdc.test/runnable_cxx/cppa.d -shared-libphobos execution test UNRESOLVED: gdc.test/runnable_cxx/externmangle.d compilation failed to produce executable UNRESOLVED: gdc.test/runnable_cxx/externmangle.d -shared-libphobos compilation failed to produce executable === gdc Summary for unix/-m31 === # of expected passes12464 # of unexpected failures35 # of unresolved testcases 4 # of unsupported tests 759 Running target unix/-m64 FAIL: gdc.dg/attr_module.d(test for warnings, line 12) FAIL: gdc.dg/attr_module.d(test for warnings, line 18) FAIL: gdc.dg/attr_module.d(test for warnings, line 24) FAIL: gdc.
Results for 15.0.0 20240530 (experimental) [master r15-924-g370df6ef0fe] (GCC) testsuite on x86_64-pc-linux-gnu
o_iommu_type1.c -fplugin=./analyzer_kernel_plugin.so (test for bogus messages, line 42) FAIL: gcc.dg/tree-ssa/pr64910-2.c scan-assembler-times and|test 20 FAIL: gcc.dg/tree-ssa/slsr-31.c scan-tree-dump-times optimized " * 2" 1 FAIL: gcc.dg/vect/slp-perm-9.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorizing stmts using SLP" 1 FAIL: gcc.dg/vect/slp-perm-9.c scan-tree-dump-times vect "vectorizing stmts using SLP" 1 XPASS: gcc.dg/vect/vect-reduc-in-order-1.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-1.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-2.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-3.c execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c -flto -ffat-lto-objects execution test XPASS: gcc.dg/vect/vect-reduc-in-order-4.c execution test FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512bw-vmovdqu16-1.c scan-assembler-times (?:vmovdqu16|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/avx512dq-pr88465.c scan-assembler-times kxnorb[ \\t] 1 FAIL: gcc.target/i386/avx512f-pr88465.c scan-assembler-times kxnorw[ \\t] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%xmm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^,]*,[^{\\n]*%ymm[0-9] 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%xmm[0-9], *[^,]* 1 FAIL: gcc.target/i386/avx512fp16-13.c scan-assembler-times vmovdqu16[ t]*[^{\\n]*%ymm[0-9], *[^,]* 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kmovb[\\t ] 4 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times korb[\\t ] 1 XPASS: gcc.target/i386/bitwise_mask_op-3.c scan-assembler-times kxorb[\\t ] 1 FAIL: gcc.target/i386/minmax-10.c scan-assembler-not cmp FAIL: gcc.target/i386/minmax-10.c scan-assembler-times test 6 FAIL: gcc.target/i386/pieces-memset-11.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-14.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-2.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-20.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-23.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-29.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-30.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-33.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-34.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-37.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 2 FAIL: gcc.target/i386/pieces-memset-44.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pieces-memset-5.c scan-assembler-times vmovdqu[ t]+[^\\n]*%ymm 1 FAIL: gcc.target/i386/pr31985.c scan-assembler-times movl 4 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vextracti128)[ t]+[^{\\n]*%ymm[0-9]+[^\\n]*)(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-5.c scan-assembler-times (?:vmovdqu8|vinserti128)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 1 FAIL: gcc.target/i386/pr95483-6.c scan-assembler-times (?:vinserti128|vmovdqu)[ t]+[^{\\n]*)[^\\n]*%ymm[0-9]+(?:\\n|[ t]+#) 2 FAIL: gcc.target/i386/pr97873-1.c scan-assembler pabsq FAIL: gcc.target/i386/vect-double-2.c scan-tree-dump-times vect "Vectorized loops: 1" 1 FAIL: gcc.target/i386/vect-shiftv4qi.c scan-assembler-times psrlw 5 FAIL: gcc.target/i386/xorsign.c scan-tree-dump-times vect "vectorized 2 loops" 1 === gcc Summary for unix/-m32 === # of expected passes197789 # of unexpected failures158 # of unexpected successes 30 # of expected failures 1553 # of unsupported tests 4077 === gcc Summary === # of expected passes401938 # of unexpected failures319 # of unexpected successes 50 # of expected failures 3100 # of unsupported tests 7352 /export/home/haochenj/src/gcc-regression/bld/gcc/xgcc version 15.0.0 20240530 (experimental) [master r15-924-g370df6ef0fe] (GCC) === gfortran tests === Running target unix === gfortran Summary for unix === # of expected passes70252 # of expected failures 273 # of unsupported tests 65 Running targe
Results for 15.0.0 20240529 (experimental) [master r15-912-g86b98d93998942] (GCC) testsuite on m68k-unknown-linux-gnu
]*, 4, 0, 0);" 1 FAIL: c-c++-common/gomp/atomic-28.c -std=c++20 scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*, 4, 5, 5);" 1 FAIL: c-c++-common/gomp/atomic-28.c -std=c++20 scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*, 4, 4, 2);" 1 FAIL: c-c++-common/gomp/atomic-28.c -std=c++20 scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*, 260, 5, 0);" 1 FAIL: c-c++-common/gomp/atomic-28.c -std=c++20 scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*, 4, 0, 0);" 1 FAIL: c-c++-common/gomp/atomic-3.c -std=gnu++98 scan-tree-dump-times ompexp "xyzzy, 4" 1 FAIL: c-c++-common/gomp/atomic-3.c -std=gnu++14 scan-tree-dump-times ompexp "xyzzy, 4" 1 FAIL: c-c++-common/gomp/atomic-3.c -std=gnu++17 scan-tree-dump-times ompexp "xyzzy, 4" 1 FAIL: c-c++-common/gomp/atomic-3.c -std=gnu++20 scan-tree-dump-times ompexp "xyzzy, 4" 1 FAIL: c-c++-common/gomp/atomic-9.c -std=gnu++98 scan-tree-dump-times ompexp "__atomic_fetch_add" 1 FAIL: c-c++-common/gomp/atomic-9.c -std=gnu++14 scan-tree-dump-times ompexp "__atomic_fetch_add" 1 FAIL: c-c++-common/gomp/atomic-9.c -std=gnu++17 scan-tree-dump-times ompexp "__atomic_fetch_add" 1 FAIL: c-c++-common/gomp/atomic-9.c -std=gnu++20 scan-tree-dump-times ompexp "__atomic_fetch_add" 1 === g++ Summary === # of expected passes248953 # of unexpected failures113 # of expected failures 2605 # of unsupported tests 11627 /daten/aranym/gcc/gcc-20240530/Build/gcc/xg++ version 15.0.0 20240529 (experimental) [master r15-912-g86b98d93998942] (GCC) Host is x86_64-suse-linux-gnu === gcc tests === Running target aranym FAIL: gcc.c-torture/execute/pr97073.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O0 execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O1 execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O2 execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O3 -g execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -Os execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc.dg/atomic/c11-atomic-exec-5.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc.dg/debug/btf/btf-bitfields-1.c scan-assembler-times [\\t ]0x1340[\\t ]+[^\\n]*btm_offset 1 FAIL: gcc.dg/Warray-bounds-48-novec.c (test for excess errors) FAIL: gcc.dg/builtin-object-size-20.c scan-tree-dump-not optimized "fail" FAIL: gcc.dg/ifcvt-4.c scan-rtl-dump ce1 "2 true changes made" FAIL: gcc.dg/loop-9.c scan-rtl-dump loop2_invariant "Decided" FAIL: gcc.dg/loop-9.c scan-rtl-dump loop2_invariant "without introducing a new temporary register" FAIL: gcc.dg/memcmp-3.c (test for excess errors) UNRESOLVED: gcc.dg/memcmp-3.c scan-tree-dump-not optimized "abort" FAIL: gcc.dg/pr110279-1.c scan-tree-dump-times widening_mul "Generated FMA" 3 FAIL: gcc.dg/pr46647.c scan-tree-dump-not optimized "memset" FAIL: gcc.dg/pr84877.c execution test FAIL: gcc.dg/pr87954.c scan-tree-dump-times optimized " *w? |WIDEN_MULT_PLUS_EXPR" 1 UNRESOLVED: gcc.dg/superblock.c scan-rtl-dump-times sched2 "ADVANCING TO" 2 FAIL: c-c++-common/auto-init-7.c -Wc++-compat scan-tree-dump gimple "temp4 = .DEFERRED_INIT ((8|5), 2, &"temp4"" FAIL: c-c++-common/auto-init-8.c -Wc++-compat scan-tree-dump gimple "temp4 = .DEFERRED_INIT ((8|5), 1, &"temp4"" FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 16 (test for warnings, line 15) FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 24 (test for warnings, line 23) FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 27 (test for warnings, line 26) FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 30 (test for warnings, line 29) FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 32 (test for warnings, line 31) FAIL: c-c++-common/pr51628-3.c -Wc++-compat at line 34 (test for warnings, line 33) FAIL: c-c++-common/gomp/allocate-10.c scan-tree-dump-times gimple "B1.[0-9]+ = __builtin_GOMP_alloc (4, 12, my_handle);" 1 FAIL: c-c++-common/gomp/atomic-10.c scan-tree-dump-times ompexp "__atomic_fetch_add" 4 FAIL: c-c++-common/gomp/atomic-28.c scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*, 4, 5, 5);" 1 FAIL: c-c++-common/gomp/atomic-28.c scan-tree-dump-times ompexp ".ATOMIC_COMPARE_EXCHANGE ([^\\n\\r]*,
Re: [PATCH v3 #2/2] [rs6000] adjust return_pc debug attrs
Hi Alex, On Thu, May 30, 2024 at 01:40:27PM -0300, Alexandre Oliva wrote: > Sorry, I misnumbered this patch as #1/2 when first posting v3. I see at least five completely different patches in this email thread, with different subjects and all. > On May 28, 2024, Segher Boessenkool wrote: > > > Please don't (incorrectly!) line-wrap changelogs. Lines are 80 > > characters wide, not 60 or 72 or whatever. 80. Indents are tabs that > > take 8 columns. > > ACK. When was it bumped up to 80, BTW? It wasn't always like that, was > it? It always was like that. Some people say 79, that is fine too. It mostly irks me because lines that end in : and then a lot of empty space look like peoople used one of those awful "write the changelog for me" helper things, that *at best* *slow you down*, and always (always!) cause worse results. > I've noticed that something seems to change my line width settings > in Emacs, but I must have missed that memo. Line length in source code is 79 or 80. In email it is 72 or so. This has not changed since the dawn of time :-) > >> +/* Return the offset to be added to the label output after CALL_INSN > >> + to compute the address to be placed in DW_AT_call_return_pc. */ > >> + > >> +static int > >> +rs6000_call_offset_return_label (rtx_insn *call_insn) > >> +{ > >> + /* All rs6000 CALL_INSN output patterns start with a b or bl, always > > > This isn't true. There is a crlogical insn before the bcl for sysv for > > example. > > Hmm, if that's so, this function will have to look at the insn and > recognize those cases and use a different way to compute the offset. > > However, I don't see any relevant uses of bcl in output patterns for > insns containing a call rtx. bl, bcl, what's the difference (bit 4 is, heh, 16 vs. 18). Read bl if you want -- the point is that there are crlogical insns before the branch-and-link. > >> +we compute the offset > >> + back to the address of the call opcode proper, then add the > >> + constant 4 bytes, to get the address after that opcode. */ > >> + return 4 - get_attr_length (call_insn); > > > Please explain this magic, too -- in code preferably (so with a ? : > > maybe, but don't try to "optimise" that expression, let the compiler > > do that, it is much better at it anyway :-) ) > > There's neither optimization nor magic, it's literally what's written in > the comment quoted above: starting from the label at the end of the call > insn (that's what the caller offsets from, as in the documentation in > the actual #1/2), subtract the length (to get to the address of the call > opcode), and add 4 (to get past the call opcode). Ok, I've reordered > the two addends for an IMHO more readable expression, but that was all. 4 - length does not make any sense /an sich/, it *is* magic. It is not clear it is correct at all, either. > > Is that correct for all ABIs we support? (Context missing! What did I ask?) > Back when I wrote this patchset, I went through all call opcodes I could > find in the md and .c files within rs6000/, and I was satisfied that it > covered what we had then, but I won't pretend to know all about all of > the ppc ABIs. I may have missed disguised call insns, too. I was > hoping some ppc maintainer, more familiar with the port than I am, would > catch any trouble on review and let me know about pitfalls and surprises > to watch out for. Yeah, things don't work that way. If you need help, *ask* for that. Don't pretend a patch is good if you have doubts yourself! > > Even if so, it needs a lot more documentation than this. > > I can write more documentation, but I'm at a loss as to what you're > hoping for. If you set clearer expectations, I'll be glad to oblige. I want a patch submission that is a) understandable and b) a good thing to have. If a patch leaves me wondering what is going on at all, that is not ideal ;-) Segher
[Bug sanitizer/84508] Load of misaligned address using _mm_load_sd
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84508 --- Comment #27 from Peter Cordes --- (In reply to Hongtao Liu from comment #26) > (In reply to Hongtao Liu from comment #25) > > (In reply to Peter Cordes from comment #22) > > > Why are we adding an alignment requirement to _mm_storel_pd, the intrinsic > > > for MOVLPD? > > > > > From Intel intrinsic guide[1], there's explict "mem_addr does not need to be > > aligned on any particular boundary" for mm_store_sd, but not for > > _mm_storel_pd. > > [1] https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html > > > But for mm_loadl_pd, it also says no need for alignment, I need to confirm > with my peers if there's any specific purpose on that. > And yes, for <16-byte memory access, there's no alignment requirement > functionally. Interesting, yes some entries explicitly say the memory can be unaligned, some don't. But I don't think we should read that as alignment required being the default if not stated. Every intrinsic that does require alignment explicitly says so. (Like _mm_load_si128.) We could make the same argument in the other direction, that if an alignment requirement isn't mentioned, we should assume there isn't one. And I already posted earlier about why we shouldn't assume C semantics based on the pointer type as Andrew Pinski had thought. Intel's intrinsic docs were originally written for ICC (classic), which takes intrinsics very literally: an intrinsic in the C source will (almost?) always compile to the corresponding asm instruction. And presumably not optimizing based on pointer-alignment UB even on a deref. And definitely not on strict-aliasing UB. So the C defaults for deref of a double* or __m64* shouldn't be assumed even when the docs don't say anything about alignment. They also don't mention aliasing but we know from Intel's examples of how to use intrinsics (I think) that the load/store intrinsics are all may_alias accesses. Intel's current ICX compiler is based on LLVM which does care about aliasing and alignment UB when optimizing, but their intrinsic docs still read like they're thinking more in terms of asm than in terms of the C abstract machine. Probably they haven't been rewritten with that in mind since they implement them (in their own compilers) so they Just Work even when aliasing other types or without alignment.
[Bug ada/115292] [15 Regression] i686-darwin17 bootstrap fails for Ada (between r15-856 and r15-889)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115292 Eric Botcazou changed: What|Removed |Added Ever confirmed|0 |1 CC||ebotcazou at gcc dot gnu.org Status|UNCONFIRMED |WAITING Last reconfirmed||2024-05-30 --- Comment #1 from Eric Botcazou --- Can you post the list of ACATS regressions on the 32-bit host?
Re: [PATCH v3 #1/2] [rs6000] adjust return_pc debug attrs
On Wed, May 29, 2024 at 03:52:15AM -0300, Alexandre Oliva wrote: > On May 27, 2024, "Kewen.Lin" wrote: > > > I wonder if it's possible to have a test case for this? > > gcc.dg/guality/pr54519-[34].c at -O[1g] are fixed by this patch on > ppc64le-linux-gnu. Are these the sort of test case you're interested > in, or are you looking for something that tests the offsets in debug > info, rather than the end-to-end debugging feature? A testcase specifically for this would be good, yes. Where you can say at the top of the file "This tests that ... [X and Y]" :-) Segher