]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR rtl-optimization/12826 (Optimizer removes reference through volatile...
authorGabriel Dos Reis <gdr@integrable-solutions.net>
Wed, 21 Jan 2004 02:40:59 +0000 (02:40 +0000)
committerGabriel Dos Reis <gdr@gcc.gnu.org>
Wed, 21 Jan 2004 02:40:59 +0000 (02:40 +0000)
        Backport from mainline

        2004-01-10  Jan Hubicka  <jh@suse.cz>
        PR opt/12826
        * loop.c (insert_loop_mem): Prefer VOLATILE memory references
        to be
        stored.

From-SVN: r76252

gcc/ChangeLog
gcc/loop.c
gcc/testsuite/gcc.dg/20040112-1.c

index 0e6aee8c5ca043fd79de5744601dfb9f63db586e..e036385cb5c3491c51d707060c455a0ecd67f25e 100644 (file)
@@ -1,3 +1,12 @@
+2004-01-20  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+        Backport from mainline
+
+        2004-01-10  Jan Hubicka  <jh@suse.cz>
+        PR opt/12826
+        * loop.c (insert_loop_mem): Prefer VOLATILE memory references to be
+        stored. 
+        
 2004-01-16  Jan Hubicka  <jh@suse.cz>
 
        PR opt/13608
index 41866ca8a1544bc50486400ea244a40f6f7de766..3f66968a921f7c87661ff90e2cf5bc73460edcea 100644 (file)
@@ -9648,6 +9648,8 @@ insert_loop_mem (mem, data)
   for (i = 0; i < loop_info->mems_idx; ++i)
     if (rtx_equal_p (m, loop_info->mems[i].mem))
       {
+        if (MEM_VOLATILE_P (m) && !MEM_VOLATILE_P (loop_info->mems[i].mem))
+          loop_info->mems[i].mem = m;
        if (GET_MODE (m) != GET_MODE (loop_info->mems[i].mem))
          /* The modes of the two memory accesses are different.  If
             this happens, something tricky is going on, and we just
index 83996fe6c239c4665ecb2ec79e0431579d42f679..72ccad2a3a32dcbafef448172eb4f44f8e1c2da3 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
 /* { dg-options "-O2" } */
 /* { dg-final { scan-assembler "testb" } } */
+void
 ftn (char *sp)
 {
   char status;