12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /* $Id$ */
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- /* C O P Y P R O P A G A T I O N */
- extern line_p *copies; /* table of copies; every entry points to the
- * store-instruction.
- */
- extern short *def_to_copynr; /* Table that maps a 'definition'-number to a
- * 'copy' number.
- */
- extern short nrcopies; /* number of copies in the current procedure
- * (length of copies-table)
- */
- void copy_analysis(proc_p p);
- /* Determine which copies procedure p has.
- * Compute C_IN(b), for every basic block b.
- */
- bool is_copy(line_p def);
- /* See if the definition def is also a 'copy',
- * i.e. an statement of the form
- * 'A := B' (or, in EM terminology:
- * a sequence 'Load Variable; Store Variable').
- */
- void fold_var(line_p old, line_p new, bblock_p b);
- /* The variable referenced by the
- * EM instruction 'old' must be replaced
- * by the variable referenced by 'new'.
- */
- bool value_retained(line_p copy, short defnr, line_p use, bblock_p b);
- /* bblock_p b)
- * See if the right hand side variable of the
- * copy still has the same value at 'use'.
- * If the copy and the use are in the same
- * basic block (defnr = 0), search from the
- * copy to the use, to see if the rhs variable
- * is changed. If the copy is in another block,
- * defnr is the definition-number of the copy.
- * Search from the beginning of the block to
- * the use, to see if the rhs is changed;
- * if not, check that the copy is in C_IN(b).
- */
|