diff options
author | Eric Christopher <echristo@gcc.gnu.org> | 2003-10-30 23:50:53 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2003-10-30 23:50:53 +0000 |
commit | 69e4e6e99c68afdef6db27f9246be60ab560c67e (patch) | |
tree | face29257a5d20369e64e42ff522a23a4e89bbd1 | |
parent | ac3ef3f5060c4bb2c8bfc6290a46336b1248c2d5 (diff) | |
download | gcc-69e4e6e99c68afdef6db27f9246be60ab560c67e.zip gcc-69e4e6e99c68afdef6db27f9246be60ab560c67e.tar.gz gcc-69e4e6e99c68afdef6db27f9246be60ab560c67e.tar.bz2 |
function.c (purge_addressof_1): Add case for REG_RETVAL notes when modes are unequal.
2003-10-25 Eric Christopher <echristo@redhat.com>
* function.c (purge_addressof_1): Add case for REG_RETVAL
notes when modes are unequal.
From-SVN: r73107
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/function.c | 5 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fafc11e..f62a349 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-10-25 Eric Christopher <echristo@redhat.com> + + * function.c (purge_addressof_1): Add case for REG_RETVAL + notes when modes are unequal. + 2003-10-31 Jan Hubicka <jh@suse.cz> * i386-modes.def: Add XFmode format adjustment. @@ -60,9 +65,9 @@ not necessarily because of __builtin_return_addr (0). (s390_split_branches): Remove TEMP_REG and TEMP_USED arguments, remove special handling of zSeries machines. - (s390_optimize_prolog): Remove TEMP_USED argument, treat the return + (s390_optimize_prolog): Remove TEMP_USED argument, treat the return register as a regular register on zSeries machines. - (s390_reorg): Adjust calls to s390_split_branches and + (s390_reorg): Adjust calls to s390_split_branches and s390_optimize_prolog. (s390_frame_info): On zSeries machines, do not assume the return register is always used. Update regs_ever_live with current data @@ -97,14 +102,14 @@ * target.h (struct gcc_target): Add build_builtin_va_list. * tree.c (build_common_tree_nodes_2): Use it. - * config/alpha/alpha-protos.h, config/alpha/alpha.c, + * config/alpha/alpha-protos.h, config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/unicosmk.h, config/d30v/d30v-protos.h, config/d30v/d30v.c, config/d30v/d30v.h, config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.h, config/i860/i860-protos.h, config/i860/i860.c, config/i860/i860.h, config/i960/i960-protos.h, config/i960/i960.c, config/i960/i960.h, config/mips/iris6.h, config/mips/mips-protos.h, config/mips/mips.c, - config/mips/mips.h, config/rs6000/rs6000-protos.h, + config/mips/mips.h, config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h, config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.h, diff --git a/gcc/function.c b/gcc/function.c index 6531c02..c2f3202 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3085,7 +3085,10 @@ purge_addressof_1 (rtx *loc, rtx insn, int force, int store, int may_postpone, subregs. */ || (GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD && (GET_MODE_SIZE (GET_MODE (x)) - > GET_MODE_SIZE (GET_MODE (sub))))) + > GET_MODE_SIZE (GET_MODE (sub)))) + || (GET_MODE_SIZE (GET_MODE (x)) + < GET_MODE_SIZE (GET_MODE (sub)))) + { *loc = gen_rtx_SUBREG (GET_MODE (x), sub, 0); return true; |