Vladimir N. Makarov 44fbc9c6e0 Take insn scratch RA requirements into account in IRA.
The patch changes insn scratches which require registers for all
insn alternatives (in other words w/o X constraint in scratch
constraint string).  This is done before IRA staring its work.  LRA
still continue to change the rest scratches (with X constraint and in
insn created during IRA) into pseudos.  As before the patch at the end
of LRA work, spilled scratch pseudos (for which X constraint was
chosen) changed into scratches back.

gcc/ChangeLog:

	* lra.c (get_scratch_reg): New function.
	(remove_scratches_1): Rename remove_insn_scratches.  Use
	ira_remove_insn_scratches and get_scratch_reg.
	(remove_scratches): Do not
	initialize scratches, scratch_bitmap, and scratch_operand_bitmap.
	(lra): Call ira_restore_scratches instead of restore_scratches.
	(struct sloc, sloc_t, scratches, scratch_bitmap)
	(scratch_operand_bitmap, lra_former_scratch_p)
	(lra_former_scratch_operand_p, lra_register_new_scratch_op)
	(restore_scratches): Move them to ...
	* ira.c: ... here.
	(former_scratch_p, former_scratch_operand_p): Rename to
	ira_former_scratch_p and ira_former_scratch_operand_p.
	(contains_X_constraint_p): New function.
	(register_new_scratch_op): Rename to ira_register_new_scratch_op.
	Change it to work for IRA and LRA.
	(restore_scratches): Rename to ira_restore_scratches.
	(get_scratch_reg, ira_remove_insn_scratches): New functions.
	(ira): Call ira_remove_scratches if we use LRA.
	* ira.h (ira_former_scratch_p, ira_former_scratch_operand_p): New
	prototypes.
	(ira_register_new_scratch_op, ira_restore_scratches): New prototypes.
	(ira_remove_insn_scratches): New prototype.
	* lra-int.h (lra_former_scratch_p, lra_former_scratch_operand_p):
	Remove prototypes.
	(lra_register_new_scratch_op): Ditto.
	* lra-constraints.c: Rename lra_former_scratch_p and
	lra_former_scratch_p to ira_former_scratch_p and to
	ira_former_scratch_p.
	* lra-remat.c: Ditto.
	* lra-spills.c: Rename lra_former_scratch_p to ira_former_scratch_p.
2020-10-30 15:08:23 -04:00
2020-09-10 10:17:51 +02:00
2020-10-04 00:16:21 +00:00
2020-10-30 00:16:29 +00:00
2020-09-25 00:16:27 +00:00
2020-10-12 00:16:25 +00:00
2020-10-21 00:16:36 +00:00
2020-10-15 00:16:34 +00:00
2020-10-21 00:16:36 +00:00
2020-07-31 00:16:26 +00:00
2020-09-25 00:16:27 +00:00
2020-10-19 00:16:22 +00:00
2020-10-07 00:16:35 +00:00
2020-10-02 00:16:27 +00:00
2020-10-12 00:16:25 +00:00
2020-10-28 00:16:38 +00:00
2020-09-11 00:16:28 +00:00
2020-10-07 00:16:35 +00:00

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.
Description
No description provided
Readme 2.1 GiB
Languages
C++ 31.9%
C 31.3%
Ada 12%
D 6.5%
Go 6.4%
Other 11.5%