summaryrefslogtreecommitdiff
path: root/gcc/config/darwin.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-18 21:08:35 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-18 21:08:35 +0000
commite265a6da77f2623966ed1a19d1ab6b809ec97fef (patch)
tree8e12ef5e22b0f9baabc992a10805a642c7d0bec6 /gcc/config/darwin.c
parent78d140c990f84aa03c72b5f074683bf3f7b6307f (diff)
downloadgcc-e265a6da77f2623966ed1a19d1ab6b809ec97fef.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86207 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/darwin.c')
-rw-r--r--gcc/config/darwin.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 7b6a524db8d..579daf876fa 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -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