> -----Original Message-----
> From: Jeff Law <jeffreya...@gmail.com>
> Sent: Friday, May 3, 2024 7:53 AM
> To: Andrew Pinski (QUIC) <quic_apin...@quicinc.com>; gcc-
> patc...@gcc.gnu.org
> Subject: Re: [PATCH] DCE __cxa_atexit calls where the function is pure/const
> [PR19661]
> 
> 
> 
> On 5/2/24 3:56 PM, Andrew Pinski wrote:
> > In C++ sometimes you have a deconstructor function which is "empty",
> > like for an example with unions or with arrays.  The front-end might
> > not know it is empty either so this should be done on during
> > optimization.o To implement it I added it to DCE where we mark if a
> statement is necessary or not.
> >
> > Bootstrapped and tested on x86_64-linux-gnu with no regressions.
> >
> >     PR tree-optimization/19661
> >
> > gcc/ChangeLog:
> >
> >     * tree-ssa-dce.cc (is_cxa_atexit): New function.
> >     (is_removable_cxa_atexit_call): New function.
> >     (mark_stmt_if_obviously_necessary): Don't mark removable
> >     cxa_at_exit calls.
> >     (mark_all_reaching_defs_necessary_1): Likewise.
> >     (propagate_necessity): Likewise.
> >
> > gcc/testsuite/ChangeLog:
> >
> >     * g++.dg/tree-ssa/cxa_atexit-1.C: New test.
> >     * g++.dg/tree-ssa/cxa_atexit-2.C: New test.
> >     * g++.dg/tree-ssa/cxa_atexit-3.C: New test.
> >     * g++.dg/tree-ssa/cxa_atexit-4.C: New test.
> >     * g++.dg/tree-ssa/cxa_atexit-5.C: New test.
> OK

I have 2 issues reported to me before I pushed this so I am going to fix/check 
on them before pushing this.
The first one is the testcase fails on arm-linux-eabi since it uses 
__eabi_atexit rather than __cxa_atexit (I think the order of arguments for that 
function is slightly different too).
The second one is making sure the function will bind locally (or the user had 
the attribute on the function).
I should have a new patch Monday or Tuesday.

Thanks,
Andrew Pinski

> jeff

Reply via email to