This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Do not replace GIVs containing volatile memory references


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;
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]