diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2015-09-18 18:27:51 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2015-09-18 18:27:51 +0200 |
commit | dcd7a7dfce175c00f4a0f58d7950c6c26e24dea5 (patch) | |
tree | 945aa2d1b185af278cda26cf9296ebab74fdfa45 /gcc/except.c | |
parent | a502f7b6e47d3f790e01e91ab5c480ee4b261486 (diff) | |
download | gcc-dcd7a7dfce175c00f4a0f58d7950c6c26e24dea5.zip gcc-dcd7a7dfce175c00f4a0f58d7950c6c26e24dea5.tar.gz gcc-dcd7a7dfce175c00f4a0f58d7950c6c26e24dea5.tar.bz2 |
re PR middle-end/67619 (ICE at -O1 and above on x86_64-linux-gnu in int_mode_for_mode, at stor-layout.c:425)
PR middle-end/67619
* except.c (expand_builtin_eh_return): Use copy_addr_to_reg to copy
the address to a register.
testsuite/ChangeLog:
PR middle-end/67619
* gcc.dg/torture/pr67619.c: New test.
From-SVN: r227909
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/except.c b/gcc/except.c index 86ad6bc..f77a2fa 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2219,7 +2219,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED, VOIDmode, EXPAND_NORMAL); tmp = convert_memory_address (Pmode, tmp); if (!crtl->eh.ehr_stackadj) - crtl->eh.ehr_stackadj = copy_to_reg (tmp); + crtl->eh.ehr_stackadj = copy_addr_to_reg (tmp); else if (tmp != crtl->eh.ehr_stackadj) emit_move_insn (crtl->eh.ehr_stackadj, tmp); #endif @@ -2228,7 +2228,7 @@ expand_builtin_eh_return (tree stackadj_tree ATTRIBUTE_UNUSED, VOIDmode, EXPAND_NORMAL); tmp = convert_memory_address (Pmode, tmp); if (!crtl->eh.ehr_handler) - crtl->eh.ehr_handler = copy_to_reg (tmp); + crtl->eh.ehr_handler = copy_addr_to_reg (tmp); else if (tmp != crtl->eh.ehr_handler) emit_move_insn (crtl->eh.ehr_handler, tmp); |