Where is setup for "goto" in nested function created?

David Daney ddaney@avtrex.com
Thu May 22 17:17:00 GMT 2008


hutchinsonandy@aim.com wrote:
> During  the process of fixing setjmp for AVR target, I needed to define 
> targetm.builtin_setjmp_frame_value () to be used in
> expand_builtin_setjmp_setup().
> 
> This sets the value of the Frame pointer stored in jump buffer.
> 
> I set this "value" to virtual_stack_vars_rtx+1 (==frame_pointer)
> Receiver defined in target latter restores frame pointer using 
> virtual_stack_vars_rtx = value - 1
> 
> This produce correct code as expected and avoids run-time add/sub of 
> offsets. (setjmp works!)
> 
> However, for a normal goto   used inside a nested function, a different 
> part of gcc creates the code to store frame pointer  (not 
> expand_builtin_setjmp_setup).   I can't find this code.
> 
> The issue I have is that this "goto_setup" code does NOT use 
> targetm.builtin_setjmp_frame_value - but seems to use 
> value=virtual_stack_vars_rtx, which is incompatible with my target 
> receiver.
> 
> So where is the goto setup code created? And is there a bug here?
> 

Perhaps you need to implement one or more of: save_stack_nonlocal, 
restore_stack_nonlocal, nonlocal_goto, and/or nonlocal_goto_receiver.

David Daney



More information about the Gcc mailing list