diff options
| author | Vladimir N. Makarov <vmakarov@redhat.com> | 2020-10-30 15:05:22 -0400 | 
|---|---|---|
| committer | Vladimir N. Makarov <vmakarov@redhat.com> | 2020-10-30 15:08:23 -0400 | 
| commit | 44fbc9c6e02ca5b8f98f25b514ed7588e7ba733d (patch) | |
| tree | cb3a5a5e1fbd03203fd0a2842a6ffca63195bc51 /libcpp/expr.c | |
| parent | bdf6524bc0bfa0908a7a7c52e799dbecbebaefe8 (diff) | |
| download | gcc-44fbc9c6e02ca5b8f98f25b514ed7588e7ba733d.zip gcc-44fbc9c6e02ca5b8f98f25b514ed7588e7ba733d.tar.gz gcc-44fbc9c6e02ca5b8f98f25b514ed7588e7ba733d.tar.bz2  | |
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.
Diffstat (limited to 'libcpp/expr.c')
0 files changed, 0 insertions, 0 deletions
