summaryrefslogtreecommitdiff
path: root/jenkins
diff options
context:
space:
mode:
authorTCWG BuildSlave <tcwg-buildslave@linaro.org>2022-09-02 10:09:23 +0000
committerTCWG BuildSlave <tcwg-buildslave@linaro.org>2022-09-02 10:09:23 +0000
commitb56502f806c4bd24b07aa2822923c4c7d941ff93 (patch)
treec4ffc7d2e4f2f7fb1117676652f5cf93be4f9814 /jenkins
parent7b71841af63bfadae7e0d87edd5a8dba11b07c8d (diff)
9: force: 7354: Failure after gcc: Avoid fatal fails in predicate::init_from_control_deps
BUILD_URL: https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/479/ Failure after gcc: Avoid fatal fails in predicate::init_from_control_deps: Results changed to -10 # build_abe binutils: -9 # build_abe stage1: -5 # build_abe qemu: -2 # linux_n_obj: 7354 # First few build errors in logs: # 00:08:54 drivers/gpu/drm/msm/adreno/a6xx_gmu.c:919:5: internal compiler error: in init_from_control_deps, at gimple-predicate-analysis.cc:1699 # 00:08:55 make[4]: *** [scripts/Makefile.build:249: drivers/gpu/drm/msm/adreno/a6xx_gmu.o] Error 1 # 00:10:42 drivers/net/ethernet/freescale/enetc/enetc.c:1509:12: internal compiler error: in init_from_control_deps, at gimple-predicate-analysis.cc:1699 # 00:10:42 make[5]: *** [scripts/Makefile.build:249: drivers/net/ethernet/freescale/enetc/enetc.o] Error 1 # 00:10:58 make[4]: *** [scripts/Makefile.build:465: drivers/net/ethernet/freescale/enetc] Error 2 # 00:10:58 make[3]: *** [scripts/Makefile.build:465: drivers/net/ethernet/freescale] Error 2 # 00:11:04 make[3]: *** [scripts/Makefile.build:465: drivers/gpu/drm/msm] Error 2 # 00:12:40 make[2]: *** [scripts/Makefile.build:465: drivers/gpu/drm] Error 2 # 00:12:40 make[1]: *** [scripts/Makefile.build:465: drivers/gpu] Error 2 # 00:12:41 make[2]: *** [scripts/Makefile.build:465: drivers/net/ethernet] Error 2 from -10 # build_abe binutils: -9 # build_abe stage1: -5 # build_abe qemu: -2 # linux_n_obj: 8334 # linux build successful: all # linux boot successful: boot
Diffstat (limited to 'jenkins')
-rw-r--r--jenkins/jira-status.draft4
-rw-r--r--jenkins/mail-body.draft271
-rw-r--r--jenkins/mail-recipients.draft1
-rw-r--r--jenkins/mail-subject.draft1
-rwxr-xr-xjenkins/notify.sh3
5 files changed, 280 insertions, 0 deletions
diff --git a/jenkins/jira-status.draft b/jenkins/jira-status.draft
new file mode 100644
index 0000000..61e6173
--- /dev/null
+++ b/jenkins/jira-status.draft
@@ -0,0 +1,4 @@
+[GNU-680]
+#INTERESTING_COMMIT_STATUS#
+
+Details: https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/479/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..f7bd37d
--- /dev/null
+++ b/jenkins/mail-body.draft
@@ -0,0 +1,271 @@
+Failure after gcc: Avoid fatal fails in predicate::init_from_control_deps:
+
+Results changed to
+-10
+# build_abe binutils:
+-9
+# build_abe stage1:
+-5
+# build_abe qemu:
+-2
+# linux_n_obj:
+7354
+# First few build errors in logs:
+# 00:08:54 drivers/gpu/drm/msm/adreno/a6xx_gmu.c:919:5: internal compiler error: in init_from_control_deps, at gimple-predicate-analysis.cc:1699
+# 00:08:55 make[4]: *** [scripts/Makefile.build:249: drivers/gpu/drm/msm/adreno/a6xx_gmu.o] Error 1
+# 00:10:42 drivers/net/ethernet/freescale/enetc/enetc.c:1509:12: internal compiler error: in init_from_control_deps, at gimple-predicate-analysis.cc:1699
+# 00:10:42 make[5]: *** [scripts/Makefile.build:249: drivers/net/ethernet/freescale/enetc/enetc.o] Error 1
+# 00:10:58 make[4]: *** [scripts/Makefile.build:465: drivers/net/ethernet/freescale/enetc] Error 2
+# 00:10:58 make[3]: *** [scripts/Makefile.build:465: drivers/net/ethernet/freescale] Error 2
+# 00:11:04 make[3]: *** [scripts/Makefile.build:465: drivers/gpu/drm/msm] Error 2
+# 00:12:40 make[2]: *** [scripts/Makefile.build:465: drivers/gpu/drm] Error 2
+# 00:12:40 make[1]: *** [scripts/Makefile.build:465: drivers/gpu] Error 2
+# 00:12:41 make[2]: *** [scripts/Makefile.build:465: drivers/net/ethernet] Error 2
+
+from
+-10
+# build_abe binutils:
+-9
+# build_abe stage1:
+-5
+# build_abe qemu:
+-2
+# linux_n_obj:
+8334
+# linux build successful:
+all
+# linux boot successful:
+boot
+
+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-680 .
+#INTERESTING_COMMIT_STATUS#
+
+Bad build: https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/479/artifact/artifacts
+Good build: https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/474/artifact/artifacts
+
+Reproduce current build:
+<cut>
+mkdir -p investigate-gcc-a8ebd27d0ab69b08fd6e335bbb48a73a50202586
+cd investigate-gcc-a8ebd27d0ab69b08fd6e335bbb48a73a50202586
+
+# 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_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/479/artifact/artifacts/manifest.sh --fail
+curl -o good/artifacts/manifest.sh https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/474/artifact/artifacts/manifest.sh --fail
+
+# Reproduce bad build
+(cd bad; ../jenkins-scripts/tcwg_kernel-build.sh ^^ true %%rr[top_artifacts] artifacts)
+# Reproduce good build
+(cd good; ../jenkins-scripts/tcwg_kernel-build.sh ^^ true %%rr[top_artifacts] artifacts)
+</cut>
+
+Full commit (up to 1000 lines):
+<cut>
+commit a8ebd27d0ab69b08fd6e335bbb48a73a50202586
+Author: Richard Biener <rguenther@suse.de>
+Date: Wed Aug 31 15:25:32 2022 +0200
+
+ Avoid fatal fails in predicate::init_from_control_deps
+
+ When processing USE predicates we can drop from the AND chain,
+ when procsssing DEF predicates we can drop from the OR chain. Do
+ that instead of giving up completely. This also removes cases
+ that should never trigger.
+
+ * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ Assert the guard_bb isn't empty and has more than one successor.
+ Drop appropriate parts of the predicate when an edge fails to
+ register a predicate.
+ (predicate::dump): Dump empty predicate as TRUE.
+---
+ gcc/gimple-predicate-analysis.cc | 119 ++++++++++++++++++---------------------
+ 1 file changed, 55 insertions(+), 64 deletions(-)
+
+diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc
+index 58eade433dc..eb1e11cead8 100644
+--- a/gcc/gimple-predicate-analysis.cc
++++ b/gcc/gimple-predicate-analysis.cc
+@@ -1671,7 +1671,6 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
+ {
+ gcc_assert (is_empty ());
+
+- bool has_valid_pred = false;
+ if (num_chains == 0)
+ return;
+
+@@ -1689,27 +1688,16 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
+ of the predicates. */
+ const vec<edge> &path = dep_chains[i];
+
+- has_valid_pred = false;
++ bool has_valid_pred = false;
+ /* The chain of predicates guarding the definition along this path. */
+ pred_chain t_chain{ };
+ for (unsigned j = 0; j < path.length (); j++)
+ {
+ edge e = path[j];
+ basic_block guard_bb = e->src;
+- /* Ignore empty forwarder blocks. */
+- if (empty_block_p (guard_bb) && single_succ_p (guard_bb))
+- continue;
+
+- /* An empty basic block here is likely a PHI, and is not one
+- of the cases we handle below. */
+- gimple_stmt_iterator gsi = gsi_last_bb (guard_bb);
+- if (gsi_end_p (gsi))
+- {
+- has_valid_pred = false;
+- break;
+- }
+- /* Get the conditional controlling the bb exit edge. */
+- gimple *cond_stmt = gsi_stmt (gsi);
++ gcc_assert (!empty_block_p (guard_bb) && !single_succ_p (guard_bb));
++
+ /* Skip this edge if it is bypassing an abort - when the
+ condition is not satisfied we are neither reaching the
+ definition nor the use so it isn't meaningful. Note if
+@@ -1730,8 +1718,13 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
+ }
+ }
+ if (skip)
+- continue;
++ {
++ has_valid_pred = true;
++ continue;
++ }
+ }
++ /* Get the conditional controlling the bb exit edge. */
++ gimple *cond_stmt = last_stmt (guard_bb);
+ if (gimple_code (cond_stmt) == GIMPLE_COND)
+ {
+ /* The true edge corresponds to the uninteresting condition.
+@@ -1757,37 +1750,29 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
+ }
+ else if (gswitch *gs = dyn_cast<gswitch *> (cond_stmt))
+ {
+- /* Avoid quadratic behavior. */
+- if (gimple_switch_num_labels (gs) > MAX_SWITCH_CASES)
+- {
+- has_valid_pred = false;
+- break;
+- }
+- /* Find the case label. */
+ tree l = NULL_TREE;
+- unsigned idx;
+- for (idx = 0; idx < gimple_switch_num_labels (gs); ++idx)
+- {
+- tree tl = gimple_switch_label (gs, idx);
+- if (e->dest == label_to_block (cfun, CASE_LABEL (tl)))
+- {
+- if (!l)
+- l = tl;
+- else
+- {
+- l = NULL_TREE;
+- break;
+- }
+- }
+- }
++ /* Find the case label, but avoid quadratic behavior. */
++ if (gimple_switch_num_labels (gs) <= MAX_SWITCH_CASES)
++ for (unsigned idx = 0;
++ idx < gimple_switch_num_labels (gs); ++idx)
++ {
++ tree tl = gimple_switch_label (gs, idx);
++ if (e->dest == label_to_block (cfun, CASE_LABEL (tl)))
++ {
++ if (!l)
++ l = tl;
++ else
++ {
++ l = NULL_TREE;
++ break;
++ }
++ }
++ }
+ /* If more than one label reaches this block or the case
+ label doesn't have a contiguous range of values (like the
+ default one) fail. */
+ if (!l || !CASE_LOW (l))
+- {
+- has_valid_pred = false;
+- break;
+- }
++ has_valid_pred = false;
+ else if (!CASE_HIGH (l)
+ || operand_equal_p (CASE_LOW (l), CASE_HIGH (l)))
+ {
+@@ -1824,31 +1809,37 @@ predicate::init_from_control_deps (const vec<edge> *dep_chains,
+ both the USE (valid) and DEF (questionable) case. */
+ has_valid_pred = true;
+ else
+- {
+- has_valid_pred = false;
+- break;
+- }
++ has_valid_pred = false;
++
++ /* For USE predicates we can drop components of the
++ AND chain. */
++ if (!has_valid_pred && !is_use)
++ break;
+ }
+
+- if (!has_valid_pred)
+- break;
+- else
+- m_preds.quick_push (t_chain);
+- }
++ /* For DEF predicates we have to drop components of the OR chain
++ on failure. */
++ if (!has_valid_pred && !is_use)
++ {
++ t_chain.release ();
++ continue;
++ }
+
+- if (has_valid_pred)
+- {
+- gcc_assert (m_preds.length () != 0);
+- if (DEBUG_PREDICATE_ANALYZER && dump_file)
+- dump (NULL, "");
+- }
+- else
+- {
+- if (DEBUG_PREDICATE_ANALYZER && dump_file)
+- fprintf (dump_file, "\tFAILED\n");
+- /* Clear M_PREDS to indicate failure. */
+- m_preds.release ();
++ /* When we add || 1 simply prune the chain and return. */
++ if (t_chain.is_empty ())
++ {
++ t_chain.release ();
++ for (auto chain : m_preds)
++ chain.release ();
++ m_preds.truncate (0);
++ break;
++ }
++
++ m_preds.quick_push (t_chain);
+ }
++
++ if (DEBUG_PREDICATE_ANALYZER && dump_file)
++ dump (NULL, "");
+ }
+
+ /* Store a PRED in *THIS. */
+@@ -1877,7 +1868,7 @@ predicate::dump (gimple *stmt, const char *msg) const
+ unsigned np = m_preds.length ();
+ if (np == 0)
+ {
+- fprintf (dump_file, "\t(empty)\n");
++ fprintf (dump_file, "\tTRUE (empty)\n");
+ return;
+ }
+
+</cut>
diff --git a/jenkins/mail-recipients.draft b/jenkins/mail-recipients.draft
new file mode 100644
index 0000000..043f2be
--- /dev/null
+++ b/jenkins/mail-recipients.draft
@@ -0,0 +1 @@
+Richard Biener <rguenther@suse.de>,cc:linaro-toolchain@lists.linaro.org
diff --git a/jenkins/mail-subject.draft b/jenkins/mail-subject.draft
new file mode 100644
index 0000000..616e7d5
--- /dev/null
+++ b/jenkins/mail-subject.draft
@@ -0,0 +1 @@
+[TCWG CI] Failure after gcc: Avoid fatal fails in predicate::init_from_control_deps
diff --git a/jenkins/notify.sh b/jenkins/notify.sh
new file mode 100755
index 0000000..d744119
--- /dev/null
+++ b/jenkins/notify.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+/home/tcwg-buildslave/workspace/tcwg_kernel_0/jenkins-scripts/round-robin-notify.sh --artifacts "artifacts/jenkins" --BUILD_URL "https://ci.linaro.org/job/tcwg_kernel-gnu-build-gnu-master-aarch64-mainline-defconfig/479/" --ci_project "tcwg_kernel" --ci_config "gnu-master-aarch64-mainline-defconfig" --current_project "gcc" --first_bad "a8ebd27d0ab69b08fd6e335bbb48a73a50202586" --last_good "caaf9e66c498d9d6dc8be665d820ab45afa406ae" --summary "artifacts/mail/jira-body.txt"