This is the mail archive of the gcc@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: Question on fixup_abnormal_edges


First of all, thanks for your replies.

Michael Matz wrote:
> Abnormal edges are only used to prevent STACK_REGS from
> being allocated to such pseudos, similar to what global.c is doing.

 Indeed. 

Richard Henderson wrote:
> Well, except for caller-save not being intelligent enough to
> add the instruction to the edge, rather than directly after
> the call instruction, everything would have worked out ok.

 Yes. 

> Off-hand I don't know caller-save well enough to know how easy
> it would be to (1) fix this or (2) disable allocation of call
> clobbered hard regs to pseudos live across ABCALL/EH edges.

 OK.

 Two questions to help me understand the problem further:

 o register allocation already has tests to prevent allocations
   for pseudos live across calls when current_function_has_nonlocal_label.

   This makes a significant difference in policy between setjmp/longjmp and
   table driven EH. Was this intended in the first place ?

 o fixup_abnormal_edges already cleans up after caller-save, and could
   perhaps also do the job. 

   So far, it searches for a FALLTHRU edge out of the block and moves the
   insns there.

   Was there a specific reason for not adding them to the abnormal edge
   also ?





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