diff options
author | TCWG BuildSlave <tcwg-buildslave@linaro.org> | 2023-10-02 00:27:30 +0000 |
---|---|---|
committer | TCWG BuildSlave <tcwg-buildslave@linaro.org> | 2023-10-02 00:43:40 +0000 |
commit | 598b622477ca7ccc4dc3be486a9fbf649f7fc0b9 (patch) | |
tree | 086fc2f2429d4a16728b86fb5e26fe558bf4b3c8 /jenkins | |
parent | fec56e3bc24298c3becb62ae35c3870c4fc7c6c5 (diff) |
force: #462: 1: [TCWG CI] https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/462/
Results :
| # reset_artifacts:
| -10
| # build_abe binutils:
| -9
| # build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer:
| -8
| # build_abe linux:
| -7
| # build_abe glibc:
| -6
| # build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer:
| -5
| # benchmark -- -O2_LTO:
| 1
check_regression status : 0
Diffstat (limited to 'jenkins')
-rw-r--r-- | jenkins/jira-status.draft | 4 | ||||
-rw-r--r-- | jenkins/mail-body.draft | 232 | ||||
-rw-r--r-- | jenkins/mail-recipients.draft | 1 | ||||
-rw-r--r-- | jenkins/mail-subject.draft | 1 | ||||
-rwxr-xr-x | jenkins/notify.sh | 3 |
5 files changed, 241 insertions, 0 deletions
diff --git a/jenkins/jira-status.draft b/jenkins/jira-status.draft new file mode 100644 index 0000000..c16829b --- /dev/null +++ b/jenkins/jira-status.draft @@ -0,0 +1,4 @@ +[GNU-689] +#INTERESTING_COMMIT_STATUS# + +Details: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/462/artifact/artifacts/jenkins/mail-body.txt/*view*/ diff --git a/jenkins/mail-body.draft b/jenkins/mail-body.draft new file mode 100644 index 0000000..088c745 --- /dev/null +++ b/jenkins/mail-body.draft @@ -0,0 +1,232 @@ +After basepoints/gcc-13-2658-g645ef01a463 commit 645ef01a463f15fc230e2155719c7a12cec89acf +Author: Jakub Jelinek <jakub@redhat.com> + + Disallow pointer operands for |, ^ and partly & [PR106878] + +the following benchmarks slowed down by more than 3%: +- 403.gcc failed to build + +Below reproducer instructions can be used to re-build both "first_bad" and "last_good" cross-toolchains used in this bisection. Naturally, the scripts will fail when triggerring benchmarking jobs if you don\'t have access to Linaro TCWG CI. + +For your convenience, we have uploaded tarballs with pre-processed source and assembly files at: +- First_bad save-temps: $FIRST_BAD_ARTIFACTS/save-temps/ +- Last_good save-temps: $LAST_GOOD_ARTIFACTS/save-temps/ +- Baseline save-temps: $BASELINE_ARTIFACTS/save-temps/ + +Configuration: +- Benchmark: SPEC CPU2006 +- Toolchain: GCC + Glibc + GNU Linker +- Version: all components were built from their tip of trunk +- Target: aarch64-linux-gnu +- Compiler flags: -O2 -flto +- Hardware: NVidia TX1 4x Cortex-A57 + +This benchmarking CI is work-in-progress, and we welcome feedback and suggestions at linaro-toolchain@lists.linaro.org . In our improvement plans is to add support for SPEC CPU2017 benchmarks and provide "perf report/annotate" data behind these reports. + +THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT. + +For latest status see comments in https://linaro.atlassian.net/browse/GNU-689 . +#INTERESTING_COMMIT_STATUS# + +Bad build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/462/artifact/artifacts +Good build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/461/artifact/artifacts + +Reproduce current build: +<cut> +mkdir -p investigate-gcc-645ef01a463f15fc230e2155719c7a12cec89acf +cd investigate-gcc-645ef01a463f15fc230e2155719c7a12cec89acf + +# Fetch scripts +git clone https://git.linaro.org/toolchain/jenkins-scripts + +# Fetch manifests for bad and good builds +mkdir -p bad/artifacts good/artifacts +curl -o bad/artifacts/manifest.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/462/artifact/artifacts/manifest.sh --fail +curl -o good/artifacts/manifest.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/461/artifact/artifacts/manifest.sh --fail + +# Reproduce bad build +(cd bad; ../jenkins-scripts/tcwg_bmk-build.sh ^^ true %%rr[top_artifacts] artifacts) +# Reproduce good build +(cd good; ../jenkins-scripts/tcwg_bmk-build.sh ^^ true %%rr[top_artifacts] artifacts) +</cut> + +Full commit (up to 1000 lines): +<cut> +commit 645ef01a463f15fc230e2155719c7a12cec89acf +Author: Jakub Jelinek <jakub@redhat.com> +Date: Wed Sep 14 12:36:36 2022 +0200 + + Disallow pointer operands for |, ^ and partly & [PR106878] + + My change to match.pd (that added the two simplifications this patch + touches) results in more |/^/& assignments with pointer arguments, + but since r12-1608 we reject pointer operands for BIT_NOT_EXPR. + + Disallowing them for BIT_NOT_EXPR and allowing for BIT_{IOR,XOR,AND}_EXPR + leads to a match.pd maintainance nightmare (see one of the patches in the + PR), so either we want to allow pointer operand on BIT_NOT_EXPR (but then + we run into issues e.g. with the ranger which expects it can emulate + BIT_NOT_EXPR ~X as - 1 - X which doesn't work for pointers which don't + support MINUS_EXPR), or the following patch disallows pointer arguments + for all of BIT_{IOR,XOR,AND}_EXPR with the exception of BIT_AND_EXPR + with INTEGER_CST last operand (for simpler pointer realignment). + I had to tweak one reassoc optimization and the two match.pd + simplifications. + + 2022-09-14 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/106878 + * tree-cfg.cc (verify_gimple_assign_binary): Disallow pointer, + reference or OFFSET_TYPE BIT_IOR_EXPR, BIT_XOR_EXPR or, unless + the second argument is INTEGER_CST, BIT_AND_EXPR. + * match.pd ((type) X op CST -> (type) (X op ((type-x) CST)), + (type) (((type2) X) op Y) -> (X op (type) Y)): Punt for + POINTER_TYPE_P or OFFSET_TYPE. + * tree-ssa-reassoc.cc (optimize_range_tests_cmp_bitwise): For + pointers cast them to pointer sized integers first. + + * gcc.c-torture/compile/pr106878.c: New test. +--- + gcc/match.pd | 6 +++++- + gcc/testsuite/gcc.c-torture/compile/pr106878.c | 15 +++++++++++++++ + gcc/tree-cfg.cc | 20 ++++++++++++++++++-- + gcc/tree-ssa-reassoc.cc | 16 +++++++++++++++- + 4 files changed, 53 insertions(+), 4 deletions(-) + +diff --git a/gcc/match.pd b/gcc/match.pd +index 17318f523fb..345bcb701a5 100644 +--- a/gcc/match.pd ++++ b/gcc/match.pd +@@ -1763,6 +1763,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + && (int_fits_type_p (@1, TREE_TYPE (@0)) + || tree_nop_conversion_p (TREE_TYPE (@0), type))) + || types_match (@0, @1)) ++ && !POINTER_TYPE_P (TREE_TYPE (@0)) ++ && TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE + /* ??? This transform conflicts with fold-const.cc doing + Convert (T)(x & c) into (T)x & (T)c, if c is an integer + constants (if x has signed type, the sign bit cannot be set +@@ -1799,7 +1801,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (if (GIMPLE + && TREE_CODE (@1) != INTEGER_CST + && tree_nop_conversion_p (type, TREE_TYPE (@2)) +- && types_match (type, @0)) ++ && types_match (type, @0) ++ && !POINTER_TYPE_P (TREE_TYPE (@0)) ++ && TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE) + (bitop @0 (convert @1))))) + + (for bitop (bit_and bit_ior) +diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106878.c b/gcc/testsuite/gcc.c-torture/compile/pr106878.c +new file mode 100644 +index 00000000000..c8457189437 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/compile/pr106878.c +@@ -0,0 +1,15 @@ ++/* PR tree-optimization/106878 */ ++ ++typedef __INTPTR_TYPE__ intptr_t; ++typedef __UINTPTR_TYPE__ uintptr_t; ++int a; ++ ++int ++foo (const int *c) ++{ ++ uintptr_t d = ((intptr_t) c | (intptr_t) &a) & 65535 << 16; ++ intptr_t e = (intptr_t) c; ++ if (d != (e & 65535 << 16)) ++ return 1; ++ return 0; ++} +diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc +index e39d9471220..41ce1b29d17 100644 +--- a/gcc/tree-cfg.cc ++++ b/gcc/tree-cfg.cc +@@ -4167,6 +4167,8 @@ verify_gimple_assign_binary (gassign *stmt) + case ROUND_MOD_EXPR: + case RDIV_EXPR: + case EXACT_DIV_EXPR: ++ case BIT_IOR_EXPR: ++ case BIT_XOR_EXPR: + /* Disallow pointer and offset types for many of the binary gimple. */ + if (POINTER_TYPE_P (lhs_type) + || TREE_CODE (lhs_type) == OFFSET_TYPE) +@@ -4182,9 +4184,23 @@ verify_gimple_assign_binary (gassign *stmt) + + case MIN_EXPR: + case MAX_EXPR: +- case BIT_IOR_EXPR: +- case BIT_XOR_EXPR: ++ /* Continue with generic binary expression handling. */ ++ break; ++ + case BIT_AND_EXPR: ++ if (POINTER_TYPE_P (lhs_type) ++ && TREE_CODE (rhs2) == INTEGER_CST) ++ break; ++ /* Disallow pointer and offset types for many of the binary gimple. */ ++ if (POINTER_TYPE_P (lhs_type) ++ || TREE_CODE (lhs_type) == OFFSET_TYPE) ++ { ++ error ("invalid types for %qs", code_name); ++ debug_generic_expr (lhs_type); ++ debug_generic_expr (rhs1_type); ++ debug_generic_expr (rhs2_type); ++ return true; ++ } + /* Continue with generic binary expression handling. */ + break; + +diff --git a/gcc/tree-ssa-reassoc.cc b/gcc/tree-ssa-reassoc.cc +index e13e2cb308d..f45e552a8cc 100644 +--- a/gcc/tree-ssa-reassoc.cc ++++ b/gcc/tree-ssa-reassoc.cc +@@ -3608,10 +3608,14 @@ optimize_range_tests_cmp_bitwise (enum tree_code opcode, int first, int length, + tree type2 = NULL_TREE; + bool strict_overflow_p = false; + candidates.truncate (0); ++ if (POINTER_TYPE_P (type1)) ++ type1 = pointer_sized_int_node; + for (j = i; j; j = chains[j - 1]) + { + tree type = TREE_TYPE (ranges[j - 1].exp); + strict_overflow_p |= ranges[j - 1].strict_overflow_p; ++ if (POINTER_TYPE_P (type)) ++ type = pointer_sized_int_node; + if ((b % 4) == 3) + { + /* For the signed < 0 cases, the types should be +@@ -3642,6 +3646,8 @@ optimize_range_tests_cmp_bitwise (enum tree_code opcode, int first, int length, + tree type = TREE_TYPE (ranges[j - 1].exp); + if (j == k) + continue; ++ if (POINTER_TYPE_P (type)) ++ type = pointer_sized_int_node; + if ((b % 4) == 3) + { + if (!useless_type_conversion_p (type1, type)) +@@ -3671,7 +3677,7 @@ optimize_range_tests_cmp_bitwise (enum tree_code opcode, int first, int length, + op = r->exp; + continue; + } +- if (id == l) ++ if (id == l || POINTER_TYPE_P (TREE_TYPE (op))) + { + code = (b % 4) == 3 ? BIT_NOT_EXPR : NOP_EXPR; + g = gimple_build_assign (make_ssa_name (type1), code, op); +@@ -3695,6 +3701,14 @@ optimize_range_tests_cmp_bitwise (enum tree_code opcode, int first, int length, + gimple_seq_add_stmt_without_update (&seq, g); + op = gimple_assign_lhs (g); + } ++ type1 = TREE_TYPE (ranges[k - 1].exp); ++ if (POINTER_TYPE_P (type1)) ++ { ++ gimple *g ++ = gimple_build_assign (make_ssa_name (type1), NOP_EXPR, op); ++ gimple_seq_add_stmt_without_update (&seq, g); ++ op = gimple_assign_lhs (g); ++ } + candidates.pop (); + if (update_range_test (&ranges[k - 1], NULL, candidates.address (), + candidates.length (), opcode, ops, op, +</cut> diff --git a/jenkins/mail-recipients.draft b/jenkins/mail-recipients.draft new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/jenkins/mail-recipients.draft @@ -0,0 +1 @@ + diff --git a/jenkins/mail-subject.draft b/jenkins/mail-subject.draft new file mode 100644 index 0000000..083403b --- /dev/null +++ b/jenkins/mail-subject.draft @@ -0,0 +1 @@ +[TCWG CI] [TCWG CI] 403.gcc failed to build after basepoints/gcc-13-2658-g645ef01a463: Disallow pointer operands for |, ^ and partly & [PR106878] diff --git a/jenkins/notify.sh b/jenkins/notify.sh new file mode 100755 index 0000000..fca3067 --- /dev/null +++ b/jenkins/notify.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/home/tcwg-buildslave/workspace/tcwg_bmk_1/jenkins-scripts/round-robin-notify.sh --artifacts "artifacts/jenkins" --BUILD_URL "https://ci.linaro.org/job/tcwg_bmk_ci_gnu-build-tcwg_bmk_tx1-gnu-master-aarch64-spec2k6-O2_LTO/462/" --ci_project "tcwg_bmk_gnu_tx1" --ci_config "gnu-master-aarch64-spec2k6-O2_LTO" --current_project "gcc" --first_bad "645ef01a463f15fc230e2155719c7a12cec89acf" --last_good "05f5c42cb42c5088187d44cc45a5f671d19ad8c5" --summary "artifacts/mail/jira-body.txt" |