This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.

Index: tree-ssa-operands.h
--- 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("")))

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]