diff options
author | Dragan Mladjenovic <draganm@gcc.gnu.org> | 2019-10-04 10:57:48 +0000 |
---|---|---|
committer | Dragan Mladjenovic <draganm@gcc.gnu.org> | 2019-10-04 10:57:48 +0000 |
commit | b753d85d205b4e24f0ce11160ebee1e8da98782e (patch) | |
tree | bad486e3139f5b7371a4bb7fb649c0f838665c90 | |
parent | 3d583f47b7eca6b64dd221a3a89f07593e299e27 (diff) | |
download | gcc-b753d85d205b4e24f0ce11160ebee1e8da98782e.tar.gz |
Backprot fix for uninitialised use in mips_split_move
Fixes PR target/91474 and PR target/91702.
2019-10-04 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
Backport from mainline
2019-07-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/mips/mips.c (mips_split_move): Zero-initialize addr
and check whether addr.reg is nonnull before using it.
From-SVN: r276569
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e9c050d45a..ac7ae9ff1e3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ + 2019-10-04 Dragan Mladjenovic <dmladjenovic@wavecomp.com> + + Backport from mainline + 2019-07-07 Richard Sandiford <richard.sandiford@arm.com> + + * 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 <bernd.edlinger@hotmail.de> Backport from mainline diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 2dfc7c73cce..53429270327 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 |