This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Clean up early inliner
> Yeah, but then recursive inlining is basically an interprocedural
> tracer - and we shouldn't need to fully inline recursive calls but
> only the interesting parts. Maybe something that can be considered
> when implementing partial inlining?
Yep, we need to get partial inlining in place before playing with this. I
would like to work on this soon, but I think this should be an excuse to
cleanup tree-inline.c that would be best started by removing the generic bit
for C++ clonning that is ugly thing to do :(
I would also take this as an excuse for moving profiler to SSA so we avoid need
for non-SSA inlining. THis is not big deal, as non-SSA inlining is essentially
same as SSA inlining modulo very few tests.
> + /* When to run IPA inlining. Inlining of always-inline functions
> + happens during early inlining. */
> +
> + static bool
> + gate_cgraph_decide_inlining (void)
> + {
> + /* We'd like to skip this if not optimizing or not inlining as
> + all always-inline functions have been processed by early
> + inlining already. But this breaks EH with C++ somehow with
Update the comment that we need to call fixup_cfg pass in every case and this is currently part of inlining.
> +
> + g++.dg/torture/pr31863.C: In destructor 'Serializer<unsigned int, Loki::Typelist<ClassSpec<unsigned int, A040, 40u>, Loki::NullType> >::~Serializer()':
> + g++.dg/torture/pr31863.C:231:7: error: statement marked for throw, but doesn't
> + Serializer<unsigned int, ClassSpec<unsigned int, A040, 40u> >::~Serializer (this.18352_8, D.118411_7);
The problem here is that we are still making some functions as nothrow at -O0. THis is good thing to do as it saves
codegen very cheaply and does not affect debugging quality.
OK.
Honza