diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-06-10 19:01:37 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@redhat.com> | 2008-06-10 19:01:37 +0000 |
commit | 610897f26f384633ac683f77aeeb17d24c399bfc (patch) | |
tree | 4887e9dc9899321eee4b639cae43073f657a9f7d /gcc | |
parent | acb0de2e5166f314004e145aa27ebab248b816ea (diff) |
2008-06-10 Vladimir Makarov <vmakarov@redhat.com>
PR target/36450
* caller-save.c (insert_restore, insert_save): Don't require
alignment more than PREFERRED_STACK_BOUNDARY in asserts.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ira@136638 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/caller-save.c | 6 | ||||
-rw-r--r-- | gcc/ira-int.h | 16 |
3 files changed, 17 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d7d508eeb23..d7f4a5b2152 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,9 @@ 2008-06-10 Vladimir Makarov <vmakarov@redhat.com> + PR target/36450 + * caller-save.c (insert_restore, insert_save): Don't require + alignment more than PREFERRED_STACK_BOUNDARY in asserts. + +2008-06-10 Vladimir Makarov <vmakarov@redhat.com> * ira-int.h (allocno_copy): Change comments. diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 39bc34d2515..b8cc86612c3 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -2420,7 +2420,8 @@ insert_restore (struct insn_chain *chain, int before_p, int regno, /* Verify that the alignment of spill space is equal to or greater than required. */ - gcc_assert (GET_MODE_ALIGNMENT (GET_MODE (mem)) <= MEM_ALIGN (mem)); + gcc_assert (MIN (PREFERRED_STACK_BOUNDARY, + GET_MODE_ALIGNMENT (GET_MODE (mem))) <= MEM_ALIGN (mem)); pat = gen_rtx_SET (VOIDmode, gen_rtx_REG (GET_MODE (mem), @@ -2505,7 +2506,8 @@ insert_save (struct insn_chain *chain, int before_p, int regno, /* Verify that the alignment of spill space is equal to or greater than required. */ - gcc_assert (GET_MODE_ALIGNMENT (GET_MODE (mem)) <= MEM_ALIGN (mem)); + gcc_assert (MIN (PREFERRED_STACK_BOUNDARY, + GET_MODE_ALIGNMENT (GET_MODE (mem))) <= MEM_ALIGN (mem)); pat = gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (GET_MODE (mem), diff --git a/gcc/ira-int.h b/gcc/ira-int.h index 794eb2e6266..e9f8d8858ad 100644 --- a/gcc/ira-int.h +++ b/gcc/ira-int.h @@ -481,7 +481,9 @@ extern allocno_t *conflict_id_allocno_map; /* The following structure represents a copy of two allocnos. The copies represent move insns or potential move insns usually because - of two operand insn constraints. */ + of two operand insn constraints. To remove register shuffle, we + also create copies between allocno which is output of an insn and + allocno becoming dead in the insn. */ struct allocno_copy { /* The unique order number of the copy node starting with 0. */ @@ -491,13 +493,11 @@ struct allocno_copy allocno_t first, second; /* Execution frequency of the copy. */ int freq; - /* It is an insn which is an origin of the copy. It may be a move - insn or insn whose operand should be the same as the result - (2-operand insns). To remove register shuffle, we create copies - between allocno which is output of an insn and allocno becoming - dead in the insn. The member value for the copy created to - remove register shuffle is NULL and the frequency is smaller than - the corresponding insn execution frequency. */ + /* It is a move insn which is an origin of the copy. The member + value for the copy representing two operand insn constraints or + for the copy created to remove register shuffle is NULL. In last + case the copy frequency is smaller than the corresponding insn + execution frequency. */ rtx insn; /* All copies with the same allocno as FIRST are linked by the two following members. */ |