This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c/7871: ICE on legal code, global register variables problems
- From: Richard Zidlicky <rz at linux-m68k dot org>
- To: Jim Wilson <wilson at tuliptree dot org>
- Cc: Richard Henderson <rth at redhat dot com>, gcc-gnats at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org, wilson at gcc dot gnu dot org
- Date: Wed, 20 Aug 2003 00:01:33 +0200
- Subject: Re: c/7871: ICE on legal code, global register variables problems
- References: <3E5ED649.9080002@tuliptree.org> <20030228054711.GB12834@redhat.com> <1047273386.1000.33.camel@leaf.tuliptree.org>
On Mon, Mar 10, 2003 at 12:16:23AM -0500, Jim Wilson wrote:
I have tried the patch below again with 3.3.1 and the results are
very similar as reported earlier. My old hack still works (for my app
at least), this patch doesn't. A quick look suggests my earlier
analysis of the differences in the generated code is still valid.
Is there any point in looking at the asm output in more detail?
Richard
> 2003-03-10 James E Wilson <wilson@tuliptree.org>
>
> * flow.c (mark_set_1): Handle global_regs like the frame pointer.
>
> Index: flow.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/flow.c,v
> retrieving revision 1.549
> diff -p -r1.549 flow.c
> *** flow.c 28 Feb 2003 10:11:47 -0000 1.549
> --- flow.c 10 Mar 2003 05:05:08 -0000
> *************** mark_set_1 (pbi, code, reg, cond, insn,
> *** 2709,2714 ****
> --- 2709,2715 ----
> #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
> && ! (regno_first == ARG_POINTER_REGNUM && fixed_regs[regno_first])
> #endif
> + && ! (regno_first < FIRST_PSEUDO_REGISTER && global_regs[regno_first])
> )
> {
> int some_was_live = 0, some_was_dead = 0;