aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-06-15 22:08:42 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-06-15 18:08:42 -0400
commitb927dc22376b479fd49cc5488d6adc347c05a738 (patch)
treee331f7ff1aa0108162768b18f93bd570fa838f40 /gcc/function.c
parentf6261a8a6fdda7ea84b9d1ae025f57721230f21f (diff)
downloadgcc-b927dc22376b479fd49cc5488d6adc347c05a738.zip
gcc-b927dc22376b479fd49cc5488d6adc347c05a738.tar.gz
gcc-b927dc22376b479fd49cc5488d6adc347c05a738.tar.bz2
* function.c (gen_mem_addressof): Handle case where DECL is SAVE_EXPR.
From-SVN: r43408
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index cdfe697b..2e493f3 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2873,8 +2873,11 @@ gen_mem_addressof (reg, decl)
if (decl)
{
tree type = TREE_TYPE (decl);
+ enum machine_mode decl_mode
+ = (TREE_CODE (decl) == SAVE_EXPR ? TYPE_MODE (TREE_TYPE (decl))
+ : DECL_MODE (decl));
- PUT_MODE (reg, DECL_MODE (decl));
+ PUT_MODE (reg, decl_mode);
MEM_VOLATILE_P (reg) = TREE_SIDE_EFFECTS (decl);
MEM_SET_IN_STRUCT_P (reg, AGGREGATE_TYPE_P (type));
MEM_ALIAS_SET (reg) = get_alias_set (decl);