summaryrefslogtreecommitdiff
path: root/jenkins
diff options
context:
space:
mode:
authorTCWG BuildSlave <tcwg-buildslave@linaro.org>2023-10-02 00:27:30 +0000
committerTCWG BuildSlave <tcwg-buildslave@linaro.org>2023-10-02 00:43:40 +0000
commit598b622477ca7ccc4dc3be486a9fbf649f7fc0b9 (patch)
tree086fc2f2429d4a16728b86fb5e26fe558bf4b3c8 /jenkins
parentfec56e3bc24298c3becb62ae35c3870c4fc7c6c5 (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.draft4
-rw-r--r--jenkins/mail-body.draft232
-rw-r--r--jenkins/mail-recipients.draft1
-rw-r--r--jenkins/mail-subject.draft1
-rwxr-xr-xjenkins/notify.sh3
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"