diff options
author | TCWG BuildSlave <tcwg-buildslave@linaro.org> | 2022-09-02 10:09:23 +0000 |
---|---|---|
committer | TCWG BuildSlave <tcwg-buildslave@linaro.org> | 2022-09-02 10:09:23 +0000 |
commit | b56502f806c4bd24b07aa2822923c4c7d941ff93 (patch) | |
tree | c4ffc7d2e4f2f7fb1117676652f5cf93be4f9814 /jenkins | |
parent | 7b71841af63bfadae7e0d87edd5a8dba11b07c8d (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.draft | 4 | ||||
-rw-r--r-- | jenkins/mail-body.draft | 271 | ||||
-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, 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" |