From: Vladimir Makarov Date: Thu, 18 Sep 2014 15:57:06 +0000 (+0000) Subject: re PR target/61360 (ICE: in lra_update_insn_recog_data, at lra.c:1363 with -mtune... X-Git-Tag: upstream/12.2.0~60298 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=74c101d5fd4ebf45d9127efd82e1325882e48a12;p=platform%2Fupstream%2Fgcc.git re PR target/61360 (ICE: in lra_update_insn_recog_data, at lra.c:1363 with -mtune=bdver4) 2014-09-18 Vladimir Makarov PR target/61360 * lra.c (lra): Call recog_init. 2014-09-18 Vladimir Makarov PR target/61360 * gcc.target/i386/pr61360.c: New. From-SVN: r215358 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8dc34e..3c55ce4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-09-18 Vladimir Makarov + + PR target/61360 + * lra.c (lra): Call recog_init. + 2014-09-18 Jakub Jelinek PR c++/62017 diff --git a/gcc/lra.c b/gcc/lra.c index be8b489..acec8af 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -2135,6 +2135,11 @@ lra (FILE *f) lra_in_progress = 1; + /* The enable attributes can change their values as LRA starts + although it is a bad practice. To prevent reuse of the outdated + values, clear them. */ + recog_init (); + lra_live_range_iter = lra_coalesce_iter = 0; lra_constraint_iter = lra_constraint_iter_after_spill = 0; lra_inheritance_iter = lra_undo_inheritance_iter = 0; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9d42700..de00b32 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-09-18 Vladimir Makarov + + PR target/61360 + * gcc.target/i386/pr61360.c: New. + 2014-09-18 Jakub Jelinek PR c++/62017 diff --git a/gcc/testsuite/gcc.target/i386/pr61360.c b/gcc/testsuite/gcc.target/i386/pr61360.c new file mode 100644 index 0000000..cbd3a6f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr61360.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-march=amdfam10 -O2" } */ +int a, b, c, e, f, g, h; +long *d; +__attribute__((cold)) void fn1() { + int i = g | 1; + for (; g; h++) { + for (; a; e++) d[0] = c; + if (0.002 * i) break; + for (; b; f++) d[h] = 0; + } +}