This is the mail archive of the
mailing list for the GCC project.
PR 30089: Fix ICE in operand allocation
- From: Diego Novillo <dnovillo at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 13 Dec 2006 12:20:32 -0500
- Subject: PR 30089: Fix ICE in operand allocation
In the second testcase of this PR, we are creating very many
subvariables for one of the structures in the code. Since these
sub-variables happen to be unaliased, we are adding a VUSE operand for
each of them.
Andrew suggested to re-state this limit in terms of operands, instead
of bytes. He is re-working the code to support multiple-operands and
he will likely make this limit more flexible.
We should however, notice that we are trying to add an unreasonable
number of virtual operands. Though, ICEing is perhaps not the kindest
Setting this limit to 511 operands for now (an extra pointer is taken
up by the buffer).
The test still takes a lot more memory than it probably should. I
will be working on that. I have cc1plus topping at 1Gb on x86_64. But
the alias analysis times are more reasonable:
Execution times (seconds)
tree alias analysis : 9.83 ( 8%) usr 0.33 (15%) sys 10.21 ( 8%) wall 1090947 kB (60%) ggc
tree operand scan : 52.76 (45%) usr 0.35 (16%) sys 53.19 (43%) wall 58919 kB ( 3%) ggc
PRE : 22.95 (19%) usr 0.18 ( 8%) sys 23.35 (19%) wall 1515 kB ( 0%) ggc
TOTAL : 117.90 2.25 122.36 1810556 kB
Bootstrapped and tested on x86_64.
* tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
accomodate 511 operands.
--- tree-ssa-operands.h (revision 119760)
+++ tree-ssa-operands.h (working copy)
@@ -116,7 +116,7 @@ struct vuse_optype_d
typedef struct vuse_optype_d *vuse_optype_p;
-#define SSA_OPERAND_MEMORY_SIZE (2048 - sizeof (void *))
+#define SSA_OPERAND_MEMORY_SIZE (511 * sizeof (struct vuse_optype_d))
struct ssa_operand_memory_d GTY((chain_next("%h.next")))