From: Uros Bizjak Date: Wed, 14 Oct 2015 21:18:19 +0000 (+0200) Subject: re PR target/67967 (ICE in i386_pe_seh_unwind_emit) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a409ca75d60c5044111c410eb9f30ce806425519;p=gcc.git re PR target/67967 (ICE in i386_pe_seh_unwind_emit) PR target/67967 * config/i386/i386.c (ix86_emit_save_reg_using_mov): Do not add REG_CFA_EXPRESSION to aligned SSE stores. From-SVN: r228826 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c64fa8e92e..8b6ed9a040e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-10-14 Uros Bizjak + + PR target/67967 + * config/i386/i386.c (ix86_emit_save_reg_using_mov): Do not add + REG_CFA_EXPRESSION to aligned SSE stores. + 2015-10-14 Jeff Law * tree-ssa-threadupdate.c (thread_through_all_blocks): Bump diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index a2314e75ee6..ebe2b0aa8ab 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11612,6 +11612,7 @@ ix86_emit_save_reg_using_mov (machine_mode mode, unsigned int regno, { struct machine_function *m = cfun->machine; rtx reg = gen_rtx_REG (mode, regno); + rtx unspec = NULL_RTX; rtx mem, addr, base, insn; unsigned int align; @@ -11626,13 +11627,9 @@ ix86_emit_save_reg_using_mov (machine_mode mode, unsigned int regno, In case INCOMING_STACK_BOUNDARY is misaligned, we have to emit unaligned store. */ if (mode == V4SFmode && align < 128) - { - rtx unspec = gen_rtx_UNSPEC (mode, gen_rtvec (1, reg), UNSPEC_STOREU); - insn = emit_insn (gen_rtx_SET (mem, unspec)); - } - else - insn = emit_insn (gen_rtx_SET (mem, reg)); + unspec = gen_rtx_UNSPEC (mode, gen_rtvec (1, reg), UNSPEC_STOREU); + insn = emit_insn (gen_rtx_SET (mem, unspec ? unspec : reg)); RTX_FRAME_RELATED_P (insn) = 1; base = addr; @@ -11679,7 +11676,7 @@ ix86_emit_save_reg_using_mov (machine_mode mode, unsigned int regno, mem = gen_rtx_MEM (mode, addr); add_reg_note (insn, REG_CFA_OFFSET, gen_rtx_SET (mem, reg)); } - else + else if (unspec) add_reg_note (insn, REG_CFA_EXPRESSION, gen_rtx_SET (mem, reg)); }