[RISCV] redundant return-only BB not eliminated

Robert Guthrie forkbombidable@gmail.com
Sun Sep 6 19:48:36 GMT 2026


>
>So conceptually you could examine the predecessors of the exit block 
>to see if any of them are a trivial return.  That's your target 
>block.  Of the remaining predecessors, choose the one with the highest 
>frequency that has only a single outgoing edge reaching the exit 
>block.  Change the edge to instead reach the new target block. You may 
>have to mark it as FALLTHRU, I don't remember offhand.
>
>

Sorry to double-send: I realized I oversimplified, and now I see what
you are getting at here.
My diff handles two sequential ret-only blocks...
but I could eliminate more RETs by generalizing to "any block ending in ret"
(not just a ret-only block) followed by a "ret-only" block.
And I realize now this is why my patch took the sequence of 3 ret's I mentioned down to only 2, not 1.

I'll see if I can use this advice to fix it more generally.

Robert


More information about the Gcc mailing list