Hi,
I would like to announce that fold_buildN are now ready.
What's this?
------------
Put shortly, this is a tree equivalent of
simplify_build_{unary,binary,ternary}. For example, we could replace
fold (build2 (MULT_EXPR, type, op0, op1));
with
fold_build2 (MULT_EXPR, type, op0, op1);
while avoiding a scratch node that build2 would create when folding is
possible.
What's so good about this?
--------------------------
Reduced memory usage. Here is some quantitative justification for
this change:
http://gcc.gnu.org/ml/gcc/2005-03/msg00277.html
It's my my turn to ask you a question
-------------------------------------
When and how do we want to do these conversion?
Currently, I am thinking about doing converting all of
"fold (buildN (...))" and "fold (build (...))" to fold_buildN as soon
as stage 2 starts, which is about one month away, so that I won't
annoy people as much. I don't mind people starting to use fold_buildN
on new code or doing conversions on what they maintain, but I don't
think now is the right time to do the wholesale conversion.
Would you like fold_{unary,binary,ternary} exported?
These are equivalent to simplify_{unary,binary,ternary}. They return
a folded tree if folding is possible. Otherwise, they return
NULL_TREE. If need arises, I am happy to export them for you.
Kazu Hirata