emit-rtl.c (gen_const_mem): New.
authorRichard Henderson <rth@redhat.com>
Wed, 18 Aug 2004 21:08:35 +0000 (14:08 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 18 Aug 2004 21:08:35 +0000 (14:08 -0700)
        * emit-rtl.c (gen_const_mem): New.
        * rtl.h (gen_const_mem): Declare.
        * expr.c (do_tablejump): Use it.
        * varasm.c (force_const_mem): Likewise.
        * config/darwin.c (machopic_indirect_data_reference): Likewise.
        (machopic_legitimize_pic_address): Likewise.
        * config/arm/arm.c (legitimize_pic_address): Likewise.
        * config/i386/i386.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
        * config/ia64/ia64.md (load_fptr): Likewise.
        * config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
        * config/pa/pa.c (legitimize_pic_address): Likewise.
        * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
        (rs6000_emit_move): Likewise.
        * config/s390/s390.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/s390/s390.md (casesi): Likewise.
        * config/sh/sh.c (sh_reorg): Likewise.
        * config/sparc/sparc.c (legitimize_pic_address): Likewise.
        * config/v850/v850.md (casesi): Likewise.

        * config/darwin.c (machopic_indirect_call_target): Set MEM_NOTRAP_P.
        * config/sh/sh.c (prepare_move_operands): Remove incorrect
        use of MEM_READONLY_P.

From-SVN: r86207

18 files changed:
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/darwin.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.md
gcc/config/m32r/m32r.c
gcc/config/pa/pa.c
gcc/config/rs6000/rs6000.c
gcc/config/s390/s390.c
gcc/config/s390/s390.md
gcc/config/sh/sh.c
gcc/config/sparc/sparc.c
gcc/config/v850/v850.md
gcc/emit-rtl.c
gcc/expr.c
gcc/rtl.h
gcc/varasm.c

index 58420cf30ae57565f33e82e9200c277591db8ac6..48597b531c2746610bc139963316c9f6e4758386 100644 (file)
@@ -1,3 +1,31 @@
+2004-08-18  Richard Henderson  <rth@redhat.com>
+
+       * emit-rtl.c (gen_const_mem): New.
+       * rtl.h (gen_const_mem): Declare.
+       * expr.c (do_tablejump): Use it.
+       * varasm.c (force_const_mem): Likewise.
+       * config/darwin.c (machopic_indirect_data_reference): Likewise.
+       (machopic_legitimize_pic_address): Likewise.
+       * config/arm/arm.c (legitimize_pic_address): Likewise.
+       * config/i386/i386.c (legitimize_pic_address): Likewise.
+       (legitimize_tls_address): Likewise.
+       * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
+       * config/ia64/ia64.md (load_fptr): Likewise.
+       * config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
+       * config/pa/pa.c (legitimize_pic_address): Likewise.
+       * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
+       (rs6000_emit_move): Likewise.
+       * config/s390/s390.c (legitimize_pic_address): Likewise.
+       (legitimize_tls_address): Likewise.
+       * config/s390/s390.md (casesi): Likewise.
+       * config/sh/sh.c (sh_reorg): Likewise.
+       * config/sparc/sparc.c (legitimize_pic_address): Likewise.
+       * config/v850/v850.md (casesi): Likewise.
+
+       * config/darwin.c (machopic_indirect_call_target): Set MEM_NOTRAP_P.
+       * config/sh/sh.c (prepare_move_operands): Remove incorrect
+       use of MEM_READONLY_P.
+
 2004-08-18  Steven Bosscher  <stevenb@suse.de>
 
        * Makefile.in (OBJS-common): Add postreload-gcse.c.
index fb96c38ab5245c517e58655d5a5648033805a92f..ed6445fff0a8ab10d8668bee6f37fee1bd3762c8 100644 (file)
@@ -2921,10 +2921,9 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
        pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address);
       else
        {
-         pic_ref = gen_rtx_MEM (Pmode,
-                                gen_rtx_PLUS (Pmode, pic_offset_table_rtx,
-                                              address));
-         MEM_READONLY_P (pic_ref) = 1;
+         pic_ref = gen_const_mem (Pmode,
+                                  gen_rtx_PLUS (Pmode, pic_offset_table_rtx,
+                                                address));
        }
 
       insn = emit_move_insn (reg, pic_ref);
index 7b6a524db8d5175dd98cb52f11c58e655ccb7c85..579daf876fac51b719fce1adf989bbe659236c46 100644 (file)
@@ -386,10 +386,9 @@ machopic_indirect_data_reference (rtx orig, rtx reg)
                 (Pmode, 
                  machopic_indirection_name (orig, /*stub_p=*/false)));
 
-     SYMBOL_REF_DECL (ptr_ref) = SYMBOL_REF_DECL (orig);
+      SYMBOL_REF_DECL (ptr_ref) = SYMBOL_REF_DECL (orig);
 
-      ptr_ref = gen_rtx_MEM (Pmode, ptr_ref);
-      MEM_READONLY_P (ptr_ref) = 1;
+      ptr_ref = gen_const_mem (Pmode, ptr_ref);
 
       return ptr_ref;
     }
@@ -474,6 +473,7 @@ machopic_indirect_call_target (rtx target)
       XEXP (target, 0) = gen_rtx_SYMBOL_REF (mode, stub_name);
       SYMBOL_REF_DECL (XEXP (target, 0)) = decl;
       MEM_READONLY_P (target) = 1;
+      MEM_NOTRAP_P (target) = 1;
     }
 
   return target;
@@ -536,9 +536,8 @@ machopic_legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
              emit_insn (mode == DImode
                         ? gen_macho_high_di (temp_reg, asym)
                         : gen_macho_high (temp_reg, asym));
-             mem = gen_rtx_MEM (GET_MODE (orig),
-                                gen_rtx_LO_SUM (Pmode, temp_reg, asym));
-             MEM_READONLY_P (mem) = 1;
+             mem = gen_const_mem (GET_MODE (orig),
+                                  gen_rtx_LO_SUM (Pmode, temp_reg, asym));
              emit_insn (gen_rtx_SET (VOIDmode, reg, mem));
 #else
              /* Some other CPU -- WriteMe! but right now there are no other platform that can use dynamic-no-pic  */
@@ -568,10 +567,9 @@ machopic_legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
 
              emit_insn (gen_rtx_SET (Pmode, hi_sum_reg, sum));
 
-             mem = gen_rtx_MEM (GET_MODE (orig),
-                                gen_rtx_LO_SUM (Pmode, 
-                                                hi_sum_reg, offset));
-             MEM_READONLY_P (mem) = 1;
+             mem = gen_const_mem (GET_MODE (orig),
+                                 gen_rtx_LO_SUM (Pmode, 
+                                                 hi_sum_reg, offset));
              insn = emit_insn (gen_rtx_SET (VOIDmode, reg, mem));
              REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, pic_ref, 
                                                    REG_NOTES (insn));
@@ -618,8 +616,7 @@ machopic_legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
 
 #if !defined (TARGET_TOC)
          emit_move_insn (reg, pic_ref);
-         pic_ref = gen_rtx_MEM (GET_MODE (orig), reg);
-         MEM_READONLY_P (pic_ref) = 1;
+         pic_ref = gen_const_mem (GET_MODE (orig), reg);
 #endif
        }
       else
index 50e56ad5dd7a0035f17df1d8ade9501eebdd2169..9ae3972c4627fb938f5aa088a34b7cb2760061d9 100644 (file)
@@ -5306,8 +5306,7 @@ legitimize_pic_address (rtx orig, rtx reg)
        {
          new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTPCREL);
          new = gen_rtx_CONST (Pmode, new);
-         new = gen_rtx_MEM (Pmode, new);
-         MEM_READONLY_P (new) = 1;
+         new = gen_const_mem (Pmode, new);
          set_mem_alias_set (new, ix86_GOT_alias_set ());
 
          if (reg == 0)
@@ -5328,8 +5327,7 @@ legitimize_pic_address (rtx orig, rtx reg)
          new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOT);
          new = gen_rtx_CONST (Pmode, new);
          new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
-         new = gen_rtx_MEM (Pmode, new);
-         MEM_READONLY_P (new) = 1;
+         new = gen_const_mem (Pmode, new);
          set_mem_alias_set (new, ix86_GOT_alias_set ());
 
          if (reg == 0)
@@ -5508,8 +5506,7 @@ legitimize_tls_address (rtx x, enum tls_model model, int for_mov)
       off = gen_rtx_CONST (Pmode, off);
       if (pic)
        off = gen_rtx_PLUS (Pmode, pic, off);
-      off = gen_rtx_MEM (Pmode, off);
-      MEM_READONLY_P (off) = 1;
+      off = gen_const_mem (Pmode, off);
       set_mem_alias_set (off, ix86_GOT_alias_set ());
 
       if (TARGET_64BIT || TARGET_GNU_TLS)
index f786f335404d1a9e2d7aeef5c300fb7547bf303e..770f83279155dce8f4421465455f949ba08f5331 100644 (file)
@@ -686,13 +686,11 @@ ia64_expand_tls_address (enum tls_model tls_kind, rtx op0, rtx op1)
 
       tga_op1 = gen_reg_rtx (Pmode);
       emit_insn (gen_load_ltoff_dtpmod (tga_op1, op1));
-      tga_op1 = gen_rtx_MEM (Pmode, tga_op1);
-      MEM_READONLY_P (tga_op1) = 1;
+      tga_op1 = gen_const_mem (Pmode, tga_op1);
 
       tga_op2 = gen_reg_rtx (Pmode);
       emit_insn (gen_load_ltoff_dtprel (tga_op2, op1));
-      tga_op2 = gen_rtx_MEM (Pmode, tga_op2);
-      MEM_READONLY_P (tga_op2) = 1;
+      tga_op2 = gen_const_mem (Pmode, tga_op2);
 
       tga_ret = emit_library_call_value (gen_tls_get_addr (), NULL_RTX,
                                         LCT_CONST, Pmode, 2, tga_op1,
@@ -715,8 +713,7 @@ ia64_expand_tls_address (enum tls_model tls_kind, rtx op0, rtx op1)
 
       tga_op1 = gen_reg_rtx (Pmode);
       emit_insn (gen_load_ltoff_dtpmod (tga_op1, op1));
-      tga_op1 = gen_rtx_MEM (Pmode, tga_op1);
-      MEM_READONLY_P (tga_op1) = 1;
+      tga_op1 = gen_const_mem (Pmode, tga_op1);
 
       tga_op2 = const0_rtx;
 
@@ -746,8 +743,7 @@ ia64_expand_tls_address (enum tls_model tls_kind, rtx op0, rtx op1)
     case TLS_MODEL_INITIAL_EXEC:
       tmp = gen_reg_rtx (Pmode);
       emit_insn (gen_load_ltoff_tprel (tmp, op1));
-      tmp = gen_rtx_MEM (Pmode, tmp);
-      MEM_READONLY_P (tmp) = 1;
+      tmp = gen_const_mem (Pmode, tmp);
       tmp = force_reg (Pmode, tmp);
 
       if (!register_operand (op0, Pmode))
index 8b3cfdbdbf6db4752b74946868dc6a6655276b5c..4b9a4b95b3227131fef6ed8ec771f9642483d3b4 100644 (file)
   ""
 {
   operands[2] = no_new_pseudos ? operands[0] : gen_reg_rtx (DImode);
-  operands[3] = gen_rtx_MEM (DImode, operands[2]);
-  MEM_READONLY_P (operands[3]) = 1;
+  operands[3] = gen_const_mem (DImode, operands[2]);
 })
 
 (define_insn "*load_fptr_internal1"
index 191d0a73640a3e77e8633a24cc9b409da32657d7..ca4079f5ffadb75864404463a5575ab3b8bcf297 100644 (file)
@@ -1993,9 +1993,7 @@ m32r_legitimize_pic_address (rtx orig, rtx reg)
       emit_insn (gen_pic_load_addr (address, orig));
 
       emit_insn (gen_addsi3 (address, address, pic_offset_table_rtx));
-      pic_ref = gen_rtx_MEM (Pmode, address);
-
-      MEM_READONLY_P (pic_ref) = 1;
+      pic_ref = gen_const_mem (Pmode, address);
       insn = emit_move_insn (reg, pic_ref);
       current_function_uses_pic_offset_table = 1;
 #if 0
index d1ed7182e7a0f58145ebd800c97f3609d1d11ac2..be1c4bd4618864e4c6eb5166c11f30d965aa4f42 100644 (file)
@@ -1013,15 +1013,13 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
                      gen_rtx_PLUS (word_mode, pic_offset_table_rtx,
                                    gen_rtx_HIGH (word_mode, orig)));
       pic_ref
-       = gen_rtx_MEM (Pmode,
-                      gen_rtx_LO_SUM (Pmode, tmp_reg,
-                                      gen_rtx_UNSPEC (Pmode,
-                                                      gen_rtvec (1, orig),
-                                                      UNSPEC_DLTIND14R)));
+       = gen_const_mem (Pmode,
+                        gen_rtx_LO_SUM (Pmode, tmp_reg,
+                                        gen_rtx_UNSPEC (Pmode,
+                                                        gen_rtvec (1, orig),
+                                                        UNSPEC_DLTIND14R)));
 
       current_function_uses_pic_offset_table = 1;
-      MEM_NOTRAP_P (pic_ref) = 1;
-      MEM_READONLY_P (pic_ref) = 1;
       mark_reg_pointer (reg, BITS_PER_UNIT);
       insn = emit_move_insn (reg, pic_ref);
 
index 7651d2a05850d2bd5adc3e0d06d886228296c882..13143d7aed179d9d07a1a16de892ae25901e0db8 100644 (file)
@@ -3460,8 +3460,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model)
                  tmp1 = gen_reg_rtx (Pmode);
                  tmp2 = gen_reg_rtx (Pmode);
                  tmp3 = gen_reg_rtx (Pmode);
-                 mem = gen_rtx_MEM (Pmode, tmp1);
-                 MEM_READONLY_P (mem) = 1;
+                 mem = gen_const_mem (Pmode, tmp1);
 
                  first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, lab,
                                                             gsym));
@@ -4418,10 +4417,9 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
                        get_pool_mode (XEXP (operands[1], 0))))
            {
              operands[1]
-               = gen_rtx_MEM (mode,
-                              create_TOC_reference (XEXP (operands[1], 0)));
+               = gen_const_mem (mode,
+                                create_TOC_reference (XEXP (operands[1], 0)));
              set_mem_alias_set (operands[1], get_TOC_alias_set ());
-             MEM_READONLY_P (operands[1]) = 1;
            }
        }
       break;
index 49d4a24d8c84eddac58540e426415c8052d9f90f..89c95df8aec91dc5c00da1ac188c118c8cd4285f 100644 (file)
@@ -2604,8 +2604,7 @@ legitimize_pic_address (rtx orig, rtx reg)
           new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOT);
           new = gen_rtx_CONST (Pmode, new);
           new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
-          new = gen_rtx_MEM (Pmode, new);
-         MEM_READONLY_P (new) = 1;
+          new = gen_const_mem (Pmode, new);
           emit_move_insn (reg, new);
           new = reg;
         }
@@ -2620,8 +2619,7 @@ legitimize_pic_address (rtx orig, rtx reg)
           new = gen_rtx_CONST (Pmode, new);
           emit_move_insn (temp, new);
 
-          new = gen_rtx_MEM (Pmode, temp);
-         MEM_READONLY_P (new) = 1;
+          new = gen_const_mem (Pmode, temp);
           emit_move_insn (reg, new);
           new = reg;
         }
@@ -2641,8 +2639,7 @@ legitimize_pic_address (rtx orig, rtx reg)
           emit_move_insn (temp, addr);
 
           new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, temp);
-          new = gen_rtx_MEM (Pmode, new);
-         MEM_READONLY_P (new) = 1;
+          new = gen_const_mem (Pmode, new);
           emit_move_insn (reg, new);
           new = reg;
         }
@@ -2932,8 +2929,7 @@ legitimize_tls_address (rtx addr, rtx reg)
            new = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_GOTNTPOFF);
            new = gen_rtx_CONST (Pmode, new);
            new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new);
-           new = gen_rtx_MEM (Pmode, new);
-           MEM_READONLY_P (new) = 1;
+           new = gen_const_mem (Pmode, new);
            temp = gen_reg_rtx (Pmode);
            emit_move_insn (temp, new);
          }
@@ -2947,8 +2943,7 @@ legitimize_tls_address (rtx addr, rtx reg)
            temp = gen_reg_rtx (Pmode);
            emit_move_insn (temp, new);
 
-           new = gen_rtx_MEM (Pmode, temp);
-           MEM_READONLY_P (new) = 1;
+           new = gen_const_mem (Pmode, temp);
            temp = gen_reg_rtx (Pmode);
            emit_move_insn (temp, new);
          }
@@ -2967,8 +2962,7 @@ legitimize_tls_address (rtx addr, rtx reg)
            emit_move_insn (temp, new);
 
             new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, temp);
-           new = gen_rtx_MEM (Pmode, new);
-           MEM_READONLY_P (new) = 1;
+           new = gen_const_mem (Pmode, new);
 
            new = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, new, addr), UNSPEC_TLS_LOAD);
            temp = gen_reg_rtx (Pmode);
@@ -2986,9 +2980,7 @@ legitimize_tls_address (rtx addr, rtx reg)
            emit_move_insn (temp, new);
 
            new = temp;
-           new = gen_rtx_MEM (Pmode, new);
-           MEM_READONLY_P (new) = 1;
-
+           new = gen_const_mem (Pmode, new);
            new = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, new, addr), UNSPEC_TLS_LOAD);
            temp = gen_reg_rtx (Pmode);
            emit_insn (gen_rtx_SET (Pmode, temp, new));
index 0cbcc0a257443bab93f3bcb6c0362cebc3053cf2..bbfed329f36232ad62cdb7771fa5a61635d8f3ae 100644 (file)
 
    emit_move_insn (base, gen_rtx_LABEL_REF (Pmode, operands[3]));
 
-   index = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, base, index));
-   MEM_READONLY_P (index) = 1;
-   MEM_NOTRAP_P (index) = 1;
+   index = gen_const_mem (Pmode, gen_rtx_PLUS (Pmode, base, index));
    emit_move_insn (target, index);
 
    if (flag_pic)
index 6cfcdf94e172cc45dd65dbbdf77b1bc9f735393f..254aef5e55bb304c7c5710cd1d92a97405bec12d 100644 (file)
@@ -1042,7 +1042,6 @@ prepare_move_operands (rtx operands[], enum machine_mode mode)
              emit_insn (gen_load_gbr (tmp2));
              tmp = gen_reg_rtx (Pmode);
              emit_insn (gen_symTPOFF2reg (tmp, op1));
-             MEM_READONLY_P (tmp) = 1;
 
              if (register_operand (op0, Pmode))
                op1 = op0;
@@ -4398,9 +4397,8 @@ sh_reorg (void)
                  else
                    {
                      lab = add_constant (src, mode, 0);
-                     newsrc = gen_rtx_MEM (mode,
-                                           gen_rtx_LABEL_REF (VOIDmode, lab));
-                     MEM_READONLY_P (newsrc) = 1;
+                     newsrc = gen_rtx_LABEL_REF (VOIDmode, lab);
+                     newsrc = gen_const_mem (mode, newsrc);
                    }
                  *patp = gen_rtx_SET (VOIDmode, dst, newsrc);
                  INSN_CODE (scan) = -1;
index f1f2b211ca4112aa73430c36629fec5a70537e82..ac1a4345a0748fbcba6766515f9e7dd69e58ade8 100644 (file)
@@ -3805,11 +3805,10 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED,
       else
        address = orig;
 
-      pic_ref = gen_rtx_MEM (Pmode,
-                            gen_rtx_PLUS (Pmode,
-                                          pic_offset_table_rtx, address));
+      pic_ref = gen_const_mem (Pmode,
+                              gen_rtx_PLUS (Pmode,
+                                            pic_offset_table_rtx, address));
       current_function_uses_pic_offset_table = 1;
-      MEM_READONLY_P (pic_ref) = 1;
       insn = emit_move_insn (reg, pic_ref);
       /* Put a REG_EQUAL note on this insn, so that it can be optimized
         by loop.  */
index 900f1e31a2da369f00d1fe9b7827d665eac52e93..cc82079629b89b2541b7307145616ce4809c3806 100644 (file)
   /* Add the table address to the index.  */
   emit_insn (gen_addsi3 (reg, reg, tableaddress));
   /* Load the table entry.  */
-  mem = gen_rtx_MEM (CASE_VECTOR_MODE, reg);
-  MEM_READONLY_P (mem) = 1;
+  mem = gen_const_mem (CASE_VECTOR_MODE, reg);
   if (! TARGET_BIG_SWITCH)
     {
       rtx reg2 = gen_reg_rtx (HImode);
index 1137c45986b357d3b8a324bb68319bfdb6084874..4d40705d1bcf85f4abae9f2233fa1917a39e549d 100644 (file)
@@ -607,6 +607,17 @@ gen_rtx_MEM (enum machine_mode mode, rtx addr)
   return rt;
 }
 
+/* Generate a memory referring to non-trapping constant memory.  */
+
+rtx
+gen_const_mem (enum machine_mode mode, rtx addr)
+{
+  rtx mem = gen_rtx_MEM (mode, addr);
+  MEM_READONLY_P (mem) = 1;
+  MEM_NOTRAP_P (mem) = 1;
+  return mem;
+}
+
 rtx
 gen_rtx_SUBREG (enum machine_mode mode, rtx reg, int offset)
 {
index a6c7e8e580e007bb05b9d06b3e5395c11e6871e6..c0f10d914bb6c0b268691dbb1749bccbbf361d49 100644 (file)
@@ -8737,9 +8737,7 @@ do_tablejump (rtx index, enum machine_mode mode, rtx range, rtx table_label,
 #endif
     index = memory_address_noforce (CASE_VECTOR_MODE, index);
   temp = gen_reg_rtx (CASE_VECTOR_MODE);
-  vector = gen_rtx_MEM (CASE_VECTOR_MODE, index);
-  MEM_READONLY_P (vector) = 1;
-  MEM_NOTRAP_P (vector) = 1;
+  vector = gen_const_mem (CASE_VECTOR_MODE, index);
   convert_move (temp, vector, 0);
 
   emit_jump_insn (gen_tablejump (temp, table_label));
index cebc616db36d81de65fd5d28d3751e128c9f4337..0d0e300ca6012c8c120ed266551abdb298a21a11 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2195,6 +2195,7 @@ extern rtx unlink_insn_chain (rtx, rtx);
 extern rtx delete_insn_and_edges (rtx);
 extern void delete_insn_chain_and_edges (rtx, rtx);
 extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
+extern rtx gen_const_mem (enum machine_mode, rtx);
 
 /* In combine.c */
 extern int combine_instructions (rtx, unsigned int);
index 5d02c570ae3553dba1bcb6400931a406e496f68f..e363bf134b9801e79e3395291662cb2f9c899df9 100644 (file)
@@ -2979,9 +2979,8 @@ force_const_mem (enum machine_mode mode, rtx x)
   *slot = desc;
 
   /* Construct the MEM.  */
-  desc->mem = def = gen_rtx_MEM (mode, symbol);
+  desc->mem = def = gen_const_mem (mode, symbol);
   set_mem_attributes (def, lang_hooks.types.type_for_mode (mode, 0), 1);
-  MEM_READONLY_P (def) = 1;
 
   /* If we're dropping a label to the constant pool, make sure we
      don't delete it.  */