diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2017-10-23 15:49:19 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2017-10-23 08:49:19 -0700 |
commit | 66f4014d4bf82b7f92c99d18513cc6dc947b9ece (patch) | |
tree | b03b077bc7d4720a368b1b76eaead92c84a2e610 /gcc/config | |
parent | df41dbaf7eae8dcb0841b62647f7504ed13a1d64 (diff) | |
download | gcc-66f4014d4bf82b7f92c99d18513cc6dc947b9ece.zip gcc-66f4014d4bf82b7f92c99d18513cc6dc947b9ece.tar.gz gcc-66f4014d4bf82b7f92c99d18513cc6dc947b9ece.tar.bz2 |
i386: Skip DF_REF_INSN if DF_REF_INSN_INFO is false
We should check DF_REF_INSN_INFO before accessing DF_REF_INSN.
gcc/
PR target/82673
* config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
DF_REF_INSN if DF_REF_INSN_INFO is false.
gcc/testsuite/
PR target/82673
* gcc.target/i386/pr82673.c: New test.
From-SVN: r254013
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b182cc6..3fafcfe 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -12692,10 +12692,13 @@ ix86_finalize_stack_frame_flags (void) for (ref = DF_REG_USE_CHAIN (HARD_FRAME_POINTER_REGNUM); ref; ref = next) { - rtx_insn *insn = DF_REF_INSN (ref); + next = DF_REF_NEXT_REG (ref); + if (!DF_REF_INSN_INFO (ref)) + continue; + /* Make sure the next ref is for a different instruction, so that we're not affected by the rescan. */ - next = DF_REF_NEXT_REG (ref); + rtx_insn *insn = DF_REF_INSN (ref); while (next && DF_REF_INSN (next) == insn) next = DF_REF_NEXT_REG (next); |