[PATCH] Fix DCE REG_LIBCALL note moving from noop move insns (PR rtl-optimization/33644)

Kenneth Zadeck zadeck@naturalbridge.com
Fri Oct 19 21:18:00 GMT 2007


Jakub Jelinek wrote:
> On Fri, Oct 19, 2007 at 06:49:35PM +0200, Paolo Bonzini wrote:
>   
>>> Adding REG_EQUAL note was all that was needed for CSEing it, but dce.c 
>>> still
>>> won't delete it, because it punts on all UNSPECs.  The UNSPECs are really
>>> necessary for the __tls_get_addr call, as the call_insn has mandatory insn
>>> sequence that needs to be output there (to make TLS transitions possible).
>>>
>>> Say speculative moves use UNSPEC_LDS{,A}, but they certainly should be 
>>> dced.
>>>       
>> I would say that all non-trapping UNSPECs (not UNSPEC_VOLATILEs) should 
>> be DCEd.  Maxim Kuvyrkov recently added a target hook to mark some 
>> unspecs as non-trapping, and speculative moves are exactly the once he 
>> needed the hook for.
>>     
>
> I doubt the new target hook would fit into what DCE needs.
>
> But if the only problem is with ia64's prologue_use, or that and
> bundle_selector, then perhaps that
> if (GET_CODE (body) == UNSPEC) return false;
> could move from deletable_insn_p_1 to deletable_insn_p and
> thus avoid DCE only of UNSPECs in body of the insns, while allow
> it in PARALLELs.
>
> 	Jakub
>   
There are a lot of issues with the usage (and abuse) of unspecs on the
ia64 that most likely need to be considered as a whole and done before
you go head with this. 

I personally think that the unspec rather than use issue is something
that just needs to be fixed outright.

one of the big problems here is that it is fairly difficult to get ia64
changes reviewed in any reasonable manner. 

Kenny



More information about the Gcc-patches mailing list