On 17/02/2025 12:42, H.J. Lu wrote:
> On Mon, Feb 17, 2025 at 7:08 PM Richard Earnshaw (lists)
> <richard.earns...@arm.com> wrote:
>>
>> On 13/02/2025 21:43, H.J. Lu wrote:
>>> Increment LABEL_NUSES when using minipool_vector_label to avoid the zero
>>> use count on minipool_vector_label.
>>>
>>> PR target/118866
>>> * config/arm/arm.cc (arm_reorg): Increment LABEL_NUSES when
>>> using minipool_vector_label.
>>>
>>
>> Whilst this patch isn't wrong per se, I'm concerned that it's likely due to 
>> something else violating the assumptions that a 
>> TARGET_MACHINE_DEPENDENT_REORG pass implementation is entitled to make.  On 
>> arm, the insertion of minipools in the code has to assume that the BB layout 
>> won't change after that point (otherwise the offset calculations will be 
>> wrong).  In fact, only changes that reduce code size within a single basic 
>> block are going to be safe at this point.
>>
>> So what's changed to make this patch needed, and is it being run too late?
>>
>> R.
> 
> I am working on:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47253
> 
> After a sibcall is folded into a conditional branch,  the old
> conditional branch target label becomes used.   But the
> basic block can't be removed if it is still reachable.  In this
> case, I'd like to change final_scan_insn_1 to skip the
> code label if its LABEL_NUSES is 0.  This means that
> all referenced labels should have their LABEL_NUSES != 0.
> I will find another way to deal with it.
> 
> --
> H.J.

Right, but why does detection of this need to be delayed until after md_reorg 
has been run?  Can't the pass be done much earlier?  I'm just concerned about 
the ordering of the passes, something that has the potential to re-arrange code 
like this could mess up the assumptions that the md_reorg pass has to make.

R.

Reply via email to