This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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]

Re: [C++ PATCH] Don't create an INTEGER_CST for aggregates (emptystructs)


Gabriel Dos Reis wrote:

There is no way (C++-wise and ABI-wise) you tell when a value of empty
class has been loaded in a register or not. An empty class does not
contain any data: Everything is in the type -- which is a purely
compile-time construct.


Thanks Gaby (and Andrew) for your clarifications about the C++ front-end: I'm a novice, indeed, and appreciate that.

What I'm missing, now, but I don't think it's a purely front-end issue (I'm also implicitly taking into account you message to the library reflector) is whether optimizers downstream, in the middle-end, can factor out the ABI prescriptions about argument passing. In other terms: if something can figure that there is *nothing* to pass, actually, neither in registers nor in stack! Is middle-end/20408 really fixable on x86 or not?

If it's really impossible to optimize out the difference, maybe we have to live with it and go ahead anyway with the clean-ups that started the issue (in that case, the negative impact is small). If, on the other hand, it's only a matter of waiting for some optimizations to be implemented we have to *seriously* take care of that, making sure that the libstdc++-v3 development in that specific area doesn't proceed "too fast", assuming unreasonable optimizations.

Third possibility: a new attribute of sort (you suggested that, I think), but I'm not sure whether it's really doable: even an extension cannot be against the ABI, if the ABI is the real issue.

Yes, I'm confused: anyone willing to clarify??

Thanks in advance,
Paolo.


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