http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51784

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW
                 CC|                            |mrs at gcc dot gnu.org
          Component|middle-end                  |target

--- Comment #19 from Iain Sandoe <iains at gcc dot gnu.org> 2012-01-14 10:02:25 
UTC ---
(In reply to comment #18)
> Probably for TARGET_MACHO && !TARGET_64BIT && flag_pic you want to define
> "nonlocal_goto_receiver" pattern that would compute the right PIC pointer 
> value
> at that point (not sure if the assembler/linker would be happy by doing
> something like
> call ___x86.get_pc_thunk.bx
> L1:
> add $(L00000000002$pb-L1), %ebx
> in the nonlocal goto receiver.

I concur with the observation that we are not restoring the PIC reg (and we
need to).

[with a very quick look, we seem to be trampling on it anyway in the nested
func, even without gcov]

Thus changing to target bug.

I suppose the subtraction in your example should be feasible with a scattered
reloc on ia32, but I'd have to check.
 (on x86-64 this is not relevant since we work %rip as per linux).

Have to add it to the TODO - unless Mike has any immediate ideas?

Reply via email to