diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-02 12:35:38 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-02 12:35:38 +0000 |
commit | 20e67c9a76abdff9aef2729f98d215045cf6e3c8 (patch) | |
tree | 229fd5eb9a30eb3318898dfa3eb311a1d050bbe8 /gcc/tree-ssa-operands.c | |
parent | 02be515c2b183a3981a4146e5a0b4c0ec1c9ceb3 (diff) | |
download | gcc-20e67c9a76abdff9aef2729f98d215045cf6e3c8.tar.gz |
2008-01-02 Richard Guenther <rguenther@suse.de>
PR middle-end/34093
PR middle-end/31976
* tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
for very large number of operands instead of ICEing.
* gcc.c-torture/compile/pr34093.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131257 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r-- | gcc/tree-ssa-operands.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 72f44338b2d..116877d77bb 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -477,11 +477,10 @@ ssa_operand_alloc (unsigned size) gimple_ssa_operands (cfun)->ssa_operand_mem_size = OP_SIZE_3 * sizeof (struct voptype_d); - /* Fail if there is not enough space. If there are this many operands - required, first make sure there isn't a different problem causing this - many operands. If the decision is that this is OK, then we can - specially allocate a buffer just for this request. */ - gcc_assert (size <= gimple_ssa_operands (cfun)->ssa_operand_mem_size); + /* We can reliably trigger the case that we need arbitrary many + operands (see PR34093), so allocate a buffer just for this request. */ + if (size > gimple_ssa_operands (cfun)->ssa_operand_mem_size) + gimple_ssa_operands (cfun)->ssa_operand_mem_size = size; ptr = (struct ssa_operand_memory_d *) ggc_alloc (sizeof (struct ssa_operand_memory_d) |