diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-04-24 17:49:36 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-04-24 17:49:36 +0200 |
commit | 73f1289e49d2c1c6d23278dc7a1c70f80cd1e6b4 (patch) | |
tree | 533a4515fd04b33b51b59a7bb72a345adb016276 /gcc/rtl.c | |
parent | fb8b3e2993f4f1bb646369feab59b3bd80d1d0e1 (diff) | |
download | gcc-73f1289e49d2c1c6d23278dc7a1c70f80cd1e6b4.zip gcc-73f1289e49d2c1c6d23278dc7a1c70f80cd1e6b4.tar.gz gcc-73f1289e49d2c1c6d23278dc7a1c70f80cd1e6b4.tar.bz2 |
re PR target/90193 (asm goto with TLS "m" input operand generates incorrect assembler in O1 and O2)
PR target/90193
* rtl.c (classify_insn): Return JUMP_INSN for asm goto.
* emit-rtl.c (try_split): Copy over REG_LABEL_TARGET.
* gcc.target/i386/pr90193.c: New test.
From-SVN: r270550
Diffstat (limited to 'gcc/rtl.c')
-rw-r--r-- | gcc/rtl.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -746,6 +746,8 @@ classify_insn (rtx x) return CALL_INSN; if (ANY_RETURN_P (x)) return JUMP_INSN; + if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x)) + return JUMP_INSN; if (GET_CODE (x) == SET) { if (GET_CODE (SET_DEST (x)) == PC) @@ -772,6 +774,9 @@ classify_insn (rtx x) return CALL_INSN; if (has_return_p) return JUMP_INSN; + if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS + && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0))) + return JUMP_INSN; } #ifdef GENERATOR_FILE if (GET_CODE (x) == MATCH_OPERAND |