This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix build failure for mipsisa64-elf


In the meantime, I've bootstrapped and regression tested it on
x86_64-linux-gnu.  OK to install?

Adam

Kenneth Zadeck writes:
> Adam Nemet wrote:
> > Kenneth's patch to clean up handling of pure and constant functions
> > (http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01796.html) leads to a crash on
> > mipsisa64-elf because we call end_sequence without a matching start_sequence
> > in emit_library_call_value_1:
> >
> > ...
> >   if (flags & ECF_LIBCALL_BLOCK) 
> >     start_sequence (); 
> > ...
> >   for (; count < nargs; count++) 
> >     { 
> > ...
> >           /* loop.c won't look at CALL_INSN_FUNCTION_USAGE of const/pure 
> >              functions, so we have to pretend this isn't such a function.  */ 
> >           if (flags & ECF_LIBCALL_BLOCK) 
> >             { 
> >               rtx insns = get_insns (); 
> >               end_sequence (); 
> >               emit_insn (insns); 
> >             } 
> >           flags &= ~(ECF_CONST | ECF_PURE | ECF_LIBCALL_BLOCK); 
> >
> > This last line was removed which used to ensure that the code above it was
> > only run once and not for all arguments.
> >
> > The patch below restores this without the const/pure bits.
> >
> > Build and testing on mipsisa64-elf and x86_64-linux-gnu is still in progress
> > but if successful, is this OK to check in?  Maybe obvious?
> >
> > Adam
> >
> > 	* calls.c (emit_library_call_value_1): Restore code clearing
> > 	ECF_LIBCALL_BLOCK to ensure that we only call end_sequence
> > 	once.
> >
> > Index: calls.c
> > ===================================================================
> > --- calls.c	(revision 135252)
> > +++ calls.c	(working copy)
> > @@ -3495,6 +3495,7 @@ emit_library_call_value_1 (int retval, r
> >  	      end_sequence ();
> >  	      emit_insn (insns);
> >  	    }
> > +	  flags &= ~ECF_LIBCALL_BLOCK;
> >  
> >  	  /* If this was a CONST function, it is now PURE since it now
> >  	     reads memory.  */
> >   
> I cannot approve this, but you are correct, and it should be approved.
> 
> sorry.
> 
> kenny


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]