Question about Walking Compilation Tree in pass_manager.h

2020-02-29 Thread Nicholas Krause

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

2020-02-29 Thread Iain Sandoe

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

2020-02-29 Thread gccadmin
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.