This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: bug reload1.c reg_values[] indexed with pseudo register.
- To: grahams at rcp dot co dot uk
- Subject: Re: bug reload1.c reg_values[] indexed with pseudo register.
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Sun, 21 Jun 1998 01:48:41 -0600
- cc: egcs-bugs at cygnus dot com
- Reply-To: law at cygnus dot com
In message <199806201216.MAA00235@iron.rcp.co.uk>you write:
> I have identified the cause of the access violation
> as a pseudo register (i.e regno # >= FIRST_PSEUDO_REGISTER)
> being used to index reg_values[] which results in this case in a
> bogus rtx and hence subsequent access violation. The
> invalid reg_values[] index occurs in reload1.c within the
> routine reload_cse_noop_set_p().
>
> The set rtx parameter passed to reload_cse_noop_set_p()
> was "(insn 504 11 25 (set (reg:SI 9 r9) (reg:SI 41)) (nil) (nil))"
> and it is the (reg:SI 41) which results in the invalid index to
> reg_values[] (FIRST_PSEUDO_REGISTER is 27 on this target).
>
> It is the compilation of check_for_full_enumeration_handling()
> in gcc/stmt.c which triggers the bug. I have a cut down but not
> trival version of stmt.c which also triggers the bug.
You need to find out why the pseudo register still shows up in the
rtl -- it should have been eliminated by the time reload_cse runs.
jeff