This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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 ?