On Wed, Aug 16, 2023 at 12:48 AM Bradley Lucier <luc...@purdue.edu> wrote: > > First, if this is no longer the appropriate group for this discussion, > please tell me where to send it. > > I've been working to understand all the comments here. From them, I think: > > 1. It's OK to have gcc report back to the user whether each particular > call in tail position is optimized when -foptimize-sibling-calls is set > as a compiler option; or, to report only those calls that have not been > optimized. > > 2. Given (1), the question is what form that information should take, > and which gcc option should cause it to be expressed. > > From comments in this thread and the documentation for today's mainline > gcc, I configured and built Gambit Scheme with > > ./configure CC="/pkgs/gcc-mainline/bin/gcc -fopt-info-missed" > --enable-single-host > > thinking that info about missed optimizations would be a good place to > export information about non-optimized sibling calls. > > This may not have been a good idea, however, as I ended up with 93367 > lines about missed optimizations. > > Is this the right direction to proceed in? The documentation says about > -fopt-info-missed > > One or more of the following option keywords can be used to > describe a group of optimizations: > > 'ipa' > Enable dumps from all interprocedural optimizations. > 'loop' > Enable dumps from all loop optimizations. > 'inline' > Enable dumps from all inlining optimizations. > 'omp' > Enable dumps from all OMP (Offloading and Multi Processing) > optimizations. > 'vec' > Enable dumps from all vectorization optimizations. > 'optall' > Enable dumps from all optimizations. This is a superset of > the optimization groups listed above. > > I'd like to limit the number of missed optimization warnings, but I > don't know where sibling call optimization would fit into these categories.
I think it needs a new category, 'inline' is probably the "closest" existing one but that also tends to be noisy. Maybe 'call' would be a good name? We could report things like tail-recursion optimization, tail-calling and sibling calling optimizations there, possibly also return/argument copy elision. Richard. > > Brad