From: Ilya Enkovich Date: Fri, 11 Mar 2016 11:25:29 +0000 (+0000) Subject: re PR rtl-optimization/70160 (gcc ICE at -O2 (seg fault) and above on valid code... X-Git-Tag: basepoints/gcc-7~480 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f9befa1413555608a7f1d1c6bb1982101314a7c;p=thirdparty%2Fgcc.git re PR rtl-optimization/70160 (gcc ICE at -O2 (seg fault) and above on valid code on x86_64-linux-gnu) gcc/ PR target/70160 * config/i386/i386.c (scalar_chain::convert_reg): Skip uses of uninitialized values. gcc/testsuite/ PR target/70160 * gcc.target/i386/pr70160.c: New test. Co-Authored-By: Jakub Jelinek From-SVN: r234135 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e85072e916b..9c92d9bb236a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-03-11 Ilya Enkovich + Jakub Jelinek + + PR target/70160 + * config/i386/i386.c (scalar_chain::convert_reg): Skip uses + of uninitialized values. + 2016-03-11 Andreas Krebbel * config/s390/s390.md ("trunctddd2"): Turn former define_insn into diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index fa7d3ff65dae..3d8dbc48e5f3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3372,8 +3372,11 @@ scalar_chain::convert_reg (unsigned regno) bitmap_clear_bit (conv, DF_REF_INSN_UID (ref)); } } - else if (NONDEBUG_INSN_P (DF_REF_INSN (ref))) + /* Skip debug insns and uninitialized uses. */ + else if (DF_REF_CHAIN (ref) + && NONDEBUG_INSN_P (DF_REF_INSN (ref))) { + gcc_assert (scopy); replace_rtx (DF_REF_INSN (ref), reg, scopy); df_insn_rescan (DF_REF_INSN (ref)); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 254b6bccff37..f850e462aab9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-11 Ilya Enkovich + + PR target/70160 + * gcc.target/i386/pr70160.c: New test. + 2016-03-11 Andreas Krebbel * gcc.target/s390/dfp-1.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/pr70160.c b/gcc/testsuite/gcc.target/i386/pr70160.c new file mode 100644 index 000000000000..725e95566ac5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70160.c @@ -0,0 +1,19 @@ +/* { dg-do compile { target { ia32 } } } */ +/* { dg-options "-O2 -msse2 -Wno-uninitialized -Wno-maybe-uninitialized" } */ + +long long a; +void fn1(); +void fn2(unsigned t, int a_int, unsigned p) +{ + long long x; + int i, j = 1; + t = i; + for (; j;) { + a = x; + x = 1 + t; + j += a_int; + fn1(); + if (x == 1) + return; + } +}