[Bug target/78255] [5/6/7 regression] Indirect sibling call causing wrong code generation for ARM
avieira at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 1 14:04:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78255
avieira at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |wdijkstr at arm dot com
--- Comment #4 from avieira at gcc dot gnu.org ---
OK so after some extra debugging and digging I found that the postreload pass
is basically turning the direct sibcall into an indirect sibcall. It takes cost
into consideration, but does this only looking at the operands of the call,
i.e. the cost of a symbolref vs the cost of a register. It does not take into
consideration that it is doing a call. This doesn't seem like a good idea to
me.
Apart from that, I am now looking into letting arm_get_frame_offsets
recalculate the offsets and registers to push and pop past reload_completed. I
am not convinced this is entirely safe yet...
More information about the Gcc-bugs
mailing list