This is the mail archive of the
mailing list for the GCC project.
Re: [lto] PATCH: Add support for referencing types from function bodies
Andrew Pinski wrote:
On Mon, 2006-09-04 at 10:51 -0700, Mark Mitchell wrote:
I think Fortran and Objective-C should change, and that they may need to
change in order to work with LTO. I think that, as in C/C++, a VAR_DECL
with TREE_READONLY should be used instead, and that CONST_DECLs should
never be addressable.
Why? The reason why it was done was to save space and make sure they
are really put in the constant section. I don't see a reason why they
should be using VAR_DECLs.
VAR_DECLs should be used for data objects that potentially take up space
in the object file. Whatever you might hope to accomplish with a
CONST_DECL can equally well be accomplished with a VAR_DECL with a bit
that says it is a constant.
All of the issues you raise point to failures to optimize appropriately,
not to something about the choice of representation. In other words, if
the optimizers figure out that, given, "const int i = f();" the value of
"f" is always "3", then "i" ought to be treated just like a CONST_DECL
Fundamentally, all a CONST_DECL gives you is a name for a constant.
But, there's no advantage to having names when optimizing; you might as
well just use the constant. If there's really a need for ADDR_EXPR
(CONST_DECL), it would be simpler just to allow ADDR_EXPR (INTEGER_CST).
(650) 331-3385 x713