From 8d0d7a63019a7d67943d1867348673e3ca3dc824 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 23 Nov 2019 11:07:21 +0100 Subject: re PR inline-asm/92615 (ICE in extract_insn) PR target/92615 * config/i386/i386.c (ix86_md_asm_adjust): If dest_mode is GET_MODE (dest), is not QImode, using ZERO_EXTEND and dest is not register_operand, force x into register before storing it into dest. Formatting fix. * gcc.target/i386/pr92615.c: New test. From-SVN: r278642 --- gcc/config/i386/i386.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'gcc/config') diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 7115ec4..780ebb8 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -20819,11 +20819,15 @@ ix86_md_asm_adjust (vec &outputs, vec &/*inputs*/, { x = force_reg (dest_mode, const0_rtx); - emit_insn (gen_movstrictqi - (gen_lowpart (QImode, x), destqi)); + emit_insn (gen_movstrictqi (gen_lowpart (QImode, x), destqi)); } else - x = gen_rtx_ZERO_EXTEND (dest_mode, destqi); + { + x = gen_rtx_ZERO_EXTEND (dest_mode, destqi); + if (dest_mode == GET_MODE (dest) + && !register_operand (dest, GET_MODE (dest))) + x = force_reg (dest_mode, x); + } } if (dest_mode != GET_MODE (dest)) -- cgit v1.1