Question about Walking Compilation Tree in pass_manager.h
Greetings, Thanks for being patient with me as I figure out where to start but seems here is a good place: + /*TODO Walk Pass with Threads*/ + void walk_small_ipa_passes(function *fun) { + while(all_small_ipa_passes != NULL) { + all_small_passes->execute(fun); + all_small_ipa_passes = all_small_ipa_passes->next; + } + } + /*TODO Walk Pass with Threads*/ + void walk_regular_ipa_passes(function *fun) { + while(all_regular_ipa_passes != NULL) { + all_regular_passes->execute(fun); + all_regular_ipa_passes = all_small_ipa_passes->next; + } + } + /*TODO Walk Pass with Threads*/ + void walk_late_ipa_passes(function *fun) { + while(all_small_ipa_passes != NULL) { + all_late_passes->execute(fun); + all_late_ipa_passes = all_small_ipa_passes->next; + } These are a set of functions that can or should walk the root downward and execute a pass on the given function passed in and would be launched in async. I'm a few questions about doing this: 1. Is this safe in terms of a particular pass type running all of its passes in linear and not reordering. Seems so after reading pass.def but not sure if that's correct or something can reorder passes elsewhere. I'm assuming not. 2. The core pass manager class has very few callers and the only I'm noticing with grep are in cgraph or other such files. I'm wondering how to call these functions from callers on a per function basis. Seems the best thing is to insert them at the beginning of the pass manager execute per function. There doesn't seem to be a place for this outside of pass.def. So no idea if we need to inject a parent pass for all passes to do this. I would prefer not to do so for but it seems the only way. 3. Not sure how to do this for gimple or rtl as those are not declared as a opt_pass root node for tree. Is this assumed for a reason as the manual nor the code mentions why ipa passes are root nodes but not gimple or rtl. Thanks and I'm aware of the gate version that would be required as well to only execute if true, Nick
Re: GCC 8.4 Release Candidate available from gcc.gnu.org
Jakub Jelinek wrote: The first release candidate for GCC 8.4 is available from https://gcc.gnu.org/pub/gcc/snapshots/8.4.0-RC-20200226/ ftp://gcc.gnu.org/pub/gcc/snapshots/8.4.0-RC-20200226/ and shortly its mirrors. It has been generated from git commit r8-10091-gf80c40f93f9e8781b14f1a8301467f117fd24051. I have built and tested this revision on i686-darwin9,10 powerpc-darwin9 x86_64-darwin10 .. 19 test results look nominal - despite recent work there’s still quite a way to go especially with the sanitizer output. thanks Iain I have so far bootstrapped and tested the release candidate on x86_64-linux and i686-linux. Please test it and report any issues to bugzilla. If all goes well, I'd like to release 8.4 on Wednesday, March 4th.
gcc-9-20200229 is now available
Snapshot gcc-9-20200229 is now available on https://gcc.gnu.org/pub/gcc/snapshots/9-20200229/ and on various mirrors, see http://gcc.gnu.org/mirrors.html for details. This snapshot has been generated from the GCC 9 git branch with the following options: git://gcc.gnu.org/git/gcc.git branch releases/gcc-9 revision fa8a705d1f86ca9e576244eb9ae259ed63db4786 You'll find: gcc-9-20200229.tar.xzComplete GCC SHA256=fb7c50fbfcf31ede5b8c8b898f5501e5c007123ee5fb64f271605ae1d812b325 SHA1=56c4ddf9eb07ce8044beb313468d9b7dae9533f2 Diffs from 9-20200222 are available in the diffs/ subdirectory. When a particular snapshot is ready for public consumption the LATEST-9 link is updated and a message is sent to the gcc list. Please do not use a snapshot before it has been announced that way.