This is the mail archive of the gcc-bugs@gcc.gnu.org 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]

[Bug c/17322] [3.5 Regression] initializer folding broken


------- Additional Comments From jsm at polyomino dot org dot uk  2004-09-09 12:11 -------
Subject: Re:  [3.5 Regression] initializer folding broken

On Thu, 9 Sep 2004, rth at gcc dot gnu dot org wrote:

> I'm not sure I understand the distinction between require_constant_value and
> require_constant_elements here.  Am I allowing too much by relying on 
> initializer_constant_valid_p all the time instead of trying to figure out how
> to get TREE_CONSTANT propagated in such convoluted circumstances?

require_constant_value means a static initializer.  
require_constant_elements means either that or an automatic aggregate 
initializer in pedantic C90 mode.  Jakub could perhaps have put more 
comments in when overhauling this code.

I don't really suppose TREE_CONSTANT is going to be helpful here.  I think 
the right thing for this bug is simply to get back to accepting all forms 
of address constants we traditionally accepted (i.e. things that fold to 
address of object/function +/- a constant, possibly with various pointer 
casts and element and array accesses, with addresses then taken, involved, 
or that fold to constant cast to pointer type with the same operations 
involved).  I'd deal with rejecting the few such cases that are outside my 
model if implementing constant expressions properly, but that now seems 
unlikely.



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17322


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