Table of Contents

Name

private_prop - propagate privatization information interprocedurally

Synopsis

private_prop -pre-pass infile outfile { infile outfile }*

rescope infile outfile { infile outfile }*

private_prop infile outfile { infile outfile }*

Description

The private_prop program propagates information about which globals are privatized onto all the procedures in which the private copies might be used. It reads the ``privatized'' and ``reduced'' annotes on tree_for nodes to find privatized globals and writes out its results as lists of symbols in ``possible global privatizable'' annotations on the proc_syms.

This pass assumes that if a callsite has either of the annotations ``call mod syms'' or ``call ref syms'', then there is at most one of each of these annotations at the callsite and that if a global variable is read or written by the callee or anything it calls at any level, that variable is listed in at least one of these two annotations. If a callsite has neither of these annotations, this pass assumes that any global might be read or written on the other side of the callsite.

This pass also assumes that if there are any indirect calls (calls through pointers) or calls to external procedures (any procedures that are not defined in the files given to this pass), no privatized globals are used on the other side of the call. It's up to the pass that finds parallelization and marks privatizable variables to insure this is the case.

Since this pass sometimes needs to move variables from file scope to inter-file scope, it needs to use the rescope pass. So this pass needs to be run with the ``-pre-pass'' option, then rescope can be run, then this pass can be run again to do the actual work.

See Also

rescope(1) pgen(1)

History

This program was written by Chris Wilson.


Table of Contents