From 3d5d5550f3b553ec0fade7aea79d5ba046bf3c19 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 27 Jun 2014 10:47:17 +0200 Subject: [PATCH] backport: re PR target/61586 (ICE on alpha in alpha_handle_trap_shadows, at config/alpha/alpha.c:8724) Backport from mainline 2014-06-26 Uros Bizjak PR target/61586 * config/alpha/alpha.c (alpha_handle_trap_shadows): Handle BARRIER RTX. testsuite/ChangeLog: Backport from mainline 2014-06-26 Uros Bizjak PR target/61586 * gcc.target/alpha/pr61586.c: New test. From-SVN: r212066 --- gcc/ChangeLog | 8 ++++++++ gcc/config/alpha/alpha.c | 6 ++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/alpha/pr61586.c | 10 ++++++++++ 4 files changed, 32 insertions(+) create mode 100644 gcc/testsuite/gcc.target/alpha/pr61586.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 784d3caa2f9c..66248a1089c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-06-27 Uros Bizjak + + Backport from mainline + 2014-06-26 Uros Bizjak + + PR target/61586 + * config/alpha/alpha.c (alpha_handle_trap_shadows): Handle BARRIER RTX. + 2014-06-26 Bill Schmidt PR target/61542 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 5bd49f96daa1..1fe6eb57f328 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -8658,6 +8658,11 @@ alpha_handle_trap_shadows (void) } break; + case BARRIER: + /* __builtin_unreachable can expand to no code at all, + leaving (barrier) RTXes in the instruction stream. */ + goto close_shadow_notrapb; + case JUMP_INSN: case CALL_INSN: case CODE_LABEL: @@ -8673,6 +8678,7 @@ alpha_handle_trap_shadows (void) n = emit_insn_before (gen_trapb (), i); PUT_MODE (n, TImode); PUT_MODE (i, TImode); + close_shadow_notrapb: trap_pending = 0; shadow.used.i = 0; shadow.used.fp = 0; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a68b157e3f91..1932353f8a93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-06-27 Uros Bizjak + + Backport from mainline + 2014-06-26 Uros Bizjak + + PR target/61586 + * gcc.target/alpha/pr61586.c: New test. + 2014-06-25 Bill Schmidt * gfortran.dg/default_format_denormal_2.f90: Remove xfail for diff --git a/gcc/testsuite/gcc.target/alpha/pr61586.c b/gcc/testsuite/gcc.target/alpha/pr61586.c new file mode 100644 index 000000000000..afb1af3597fe --- /dev/null +++ b/gcc/testsuite/gcc.target/alpha/pr61586.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mieee" } */ + +void foo (int *dimensions, double **params, int hh) +{ + if (params[hh]) + ; + else if (dimensions[hh] > 0) + params[hh][0] = 1.0f; +} -- 2.47.2