From 291aac59a5c1cf12e32d59d194ff85b58b6910c7 Mon Sep 17 00:00:00 2001 From: Denis Chertykov Date: Wed, 28 May 2003 19:18:29 +0000 Subject: [PATCH] cselib.c (cselib_invalidate_regno): Abort if hardreg have a VOIDmode. * cselib.c (cselib_invalidate_regno): Abort if hardreg have a VOIDmode. * cselib.c (cselib_process_insn): Pass reg_raw_mode for hardreg in call of cselib_invalidate_regno. From-SVN: r67210 --- gcc/ChangeLog | 7 +++++++ gcc/cselib.c | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 21c12d1e7841..a3be29d38426 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-05-27 Denis Chertykov + + * cselib.c (cselib_invalidate_regno): Abort if hardreg have a + VOIDmode. + * cselib.c (cselib_process_insn): Pass reg_raw_mode for hardreg in + call of cselib_invalidate_regno. + 2003-05-28 Daniel Jacobowitz * config/mips/linux.h (LIB_SPEC): Add missing -lc and correct diff --git a/gcc/cselib.c b/gcc/cselib.c index cf3394f237a2..3ea7c236abdb 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -1019,8 +1019,11 @@ cselib_invalidate_regno (regno, mode) pseudos, only REGNO is affected. For hard regs, we must take MODE into account, and we must also invalidate lower register numbers if they contain values that overlap REGNO. */ - if (regno < FIRST_PSEUDO_REGISTER && mode != VOIDmode) + if (regno < FIRST_PSEUDO_REGISTER) { + if (mode == VOIDmode) + abort (); + if (regno < max_value_regs) i = 0; else @@ -1427,7 +1430,7 @@ cselib_process_insn (insn) { for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (call_used_regs[i]) - cselib_invalidate_regno (i, VOIDmode); + cselib_invalidate_regno (i, reg_raw_mode[i]); if (! CONST_OR_PURE_CALL_P (insn)) cselib_invalidate_mem (callmem); -- 2.47.3