diff options
author | J"orn Rennecke <joern.rennecke@st.com> | 2005-09-05 16:45:20 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2005-09-05 17:45:20 +0100 |
commit | bf877a7649b686fd19a4384c137357a0ca697931 (patch) | |
tree | 159440e0f5720f60d1900ef723f6d1455a729b10 /gcc/emit-rtl.c | |
parent | 8b0a8500fdc6b09d5b3d78d394d4d189571f9cb5 (diff) | |
download | gcc-bf877a7649b686fd19a4384c137357a0ca697931.zip gcc-bf877a7649b686fd19a4384c137357a0ca697931.tar.gz gcc-bf877a7649b686fd19a4384c137357a0ca697931.tar.bz2 |
rtl.h (gen_frame_mem, [...]): Declare.
* rtl.h (gen_frame_mem, gen_tmp_stack_mem): Declare.
* emit-rtl.c (gen_frame_mem, gen_tmp_stack_mem): New functions.
* builtins.c (expand_builtin_return_addr): Use gen_frame_mem.
From-SVN: r103917
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index d9e253e..53bff45 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -607,6 +607,31 @@ gen_const_mem (enum machine_mode mode, rtx addr) return mem; } +/* Generate a MEM referring to fixed portions of the frame, e.g., register + save areas. */ + +rtx +gen_frame_mem (enum machine_mode mode, rtx addr) +{ + rtx mem = gen_rtx_MEM (mode, addr); + MEM_NOTRAP_P (mem) = 1; + set_mem_alias_set (mem, get_frame_alias_set ()); + return mem; +} + +/* Generate a MEM referring to a temporary use of the stack, not part + of the fixed stack frame. For example, something which is pushed + by a target splitter. */ +rtx +gen_tmp_stack_mem (enum machine_mode mode, rtx addr) +{ + rtx mem = gen_rtx_MEM (mode, addr); + MEM_NOTRAP_P (mem) = 1; + if (!current_function_calls_alloca) + set_mem_alias_set (mem, get_frame_alias_set ()); + return mem; +} + /* We want to create (subreg:OMODE (obj:IMODE) OFFSET). Return true if this construct would be valid, and false otherwise. */ |