From b753d85d205b4e24f0ce11160ebee1e8da98782e Mon Sep 17 00:00:00 2001 From: Dragan Mladjenovic Date: Fri, 4 Oct 2019 10:57:48 +0000 Subject: [PATCH] Backprot fix for uninitialised use in mips_split_move Fixes PR target/91474 and PR target/91702. 2019-10-04 Dragan Mladjenovic Backport from mainline 2019-07-07 Richard Sandiford gcc/ * config/mips/mips.c (mips_split_move): Zero-initialize addr and check whether addr.reg is nonnull before using it. From-SVN: r276569 --- gcc/ChangeLog | 8 ++++++++ gcc/config/mips/mips.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e9c050d45a0..ac7ae9ff1e30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ + 2019-10-04 Dragan Mladjenovic + + Backport from mainline + 2019-07-07 Richard Sandiford + + * config/mips/mips.c (mips_split_move): Zero-initialize addr + and check whether addr.reg is nonnull before using it. + 2019-10-02 Bernd Edlinger Backport from mainline diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 2dfc7c73cce6..53429270327c 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -4849,7 +4849,7 @@ mips_split_move (rtx dest, rtx src, enum mips_split_type split_type, rtx insn_) can forward SRC for DEST. This is most useful if the next insn is a simple store. */ rtx_insn *insn = (rtx_insn *)insn_; - struct mips_address_info addr; + struct mips_address_info addr = {}; if (insn) { rtx_insn *next = next_nonnote_nondebug_insn_bb (insn); @@ -4862,7 +4862,7 @@ mips_split_move (rtx dest, rtx src, enum mips_split_type split_type, rtx insn_) { rtx tmp = XEXP (src, 0); mips_classify_address (&addr, tmp, GET_MODE (tmp), true); - if (REGNO (addr.reg) != REGNO (dest)) + if (addr.reg && REGNO (addr.reg) != REGNO (dest)) validate_change (next, &SET_SRC (set), src, false); } else -- 2.47.2