This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Do not replace GIVs containing volatile memory references
- To: egcs-patches at cygnus dot com
- Subject: Do not replace GIVs containing volatile memory references
- From: Nick Clifton <nickc at cygnus dot com>
- Date: Thu, 18 Mar 1999 16:03:01 -0800
Hi Guys,
I have now checked in the following patch. It prevents loops which
contain volatile memory references from having any GIV replacements
applied, since this will loose the volatile flag on those insns.
Cheers
Nick
Thu Mar 18 15:58:26 1999 Nick Clifton <nickc@cygnus.com>
* loop.c (strength_reduce): Do not perform pseudo replacements
if the loop contains volatile memory references.
Index: gcc/loop.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/loop.c,v
retrieving revision 1.148
diff -p -w -r1.148 loop.c
*** loop.c 1999/03/11 13:28:55 1.148
--- loop.c 1999/03/18 23:59:22
*************** strength_reduce (scan_start, end, loop_t
*** 4115,4122 ****
first_increment_giv = max_reg_num ();
for (n_extra_increment = 0, bl = loop_iv_list; bl; bl = bl->next)
n_extra_increment += bl->biv_count - 1;
/* XXX Temporary. */
! if (0 && n_extra_increment)
{
int nregs = first_increment_giv + n_extra_increment;
--- 4115,4125 ----
first_increment_giv = max_reg_num ();
for (n_extra_increment = 0, bl = loop_iv_list; bl; bl = bl->next)
n_extra_increment += bl->biv_count - 1;
+
+ /* If the loop contains volatile memory references do not allow any
+ replacements to take place, since this could loose the volatile markers. */
/* XXX Temporary. */
! if (0 && n_extra_increment && ! loop_has_volatile)
{
int nregs = first_increment_giv + n_extra_increment;