From: Eric Botcazou Date: Mon, 17 May 2004 21:05:51 +0000 (+0000) Subject: re PR rtl-optimization/11841 (The code compiled with -funroll-loops crashes) X-Git-Tag: releases/gcc-3.3.4~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=218b96c8368917b4524da0d10dc68f41a9348544;p=thirdparty%2Fgcc.git re PR rtl-optimization/11841 (The code compiled with -funroll-loops crashes) PR optimization/11841 * loop.h (REGNO_LAST_NOTE_LUID): New macro. * unroll.c (unroll_loop): Take into account notes when deciding whether a pseudo is local to the loop. From-SVN: r81950 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f9c4ad91059..3e793dacb78c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-04-17 Eric Botcazou + + PR optimization/11841 + * loop.h (REGNO_LAST_NOTE_LUID): New macro. + * unroll.c (unroll_loop): Take into account notes when deciding + whether a pseudo is local to the loop. + 2004-05-16 Gabriel Dos Reis Backport from mainline diff --git a/gcc/loop.h b/gcc/loop.h index 1dffdddec2e0..20d6e826be6b 100644 --- a/gcc/loop.h +++ b/gcc/loop.h @@ -51,6 +51,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define REGNO_FIRST_LUID(REGNO) uid_luid[REGNO_FIRST_UID (REGNO)] #define REGNO_LAST_LUID(REGNO) uid_luid[REGNO_LAST_UID (REGNO)] +#define REGNO_LAST_NOTE_LUID(REGNO) uid_luid[REGNO_LAST_NOTE_UID (REGNO)] /* A "basic induction variable" or biv is a pseudo reg that is set diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3812b3314d5..bfaeb943a5f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-05-17 Volker Reichelt + + * gcc.dg/loop-4.c: New test. + 2004-04-29 Matthias Klose Backport: diff --git a/gcc/unroll.c b/gcc/unroll.c index 4c6f74ea1c7a..a81420809180 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -794,8 +794,8 @@ unroll_loop (loop, insn_count, strength_reduce_p) for (r = FIRST_PSEUDO_REGISTER; r < max_reg_before_loop; ++r) if (REGNO_FIRST_UID (r) > 0 && REGNO_FIRST_UID (r) < max_uid_for_loop && REGNO_FIRST_LUID (r) >= copy_start_luid - && REGNO_LAST_UID (r) > 0 && REGNO_LAST_UID (r) < max_uid_for_loop - && REGNO_LAST_LUID (r) <= copy_end_luid) + && REGNO_LAST_NOTE_UID (r) > 0 && REGNO_LAST_NOTE_UID (r) < max_uid_for_loop + && REGNO_LAST_NOTE_LUID (r) <= copy_end_luid) { /* However, we must also check for loop-carried dependencies. If the value the pseudo has at the end of iteration X is