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: Missing qualifications


Hi Gaby and thanks for the interesting reply,

Yes.  One of curiosities of GCC ABI is insisting on allocating registers
for values of empty classes and insisting on filling them with zero.
Nobody cares about those values but GCC thinks it must issue useless
loads and stores.  GCC needs to be taught that nobody really cares
about those values. And refrain from allocating registers for emmpty
classes (but then you go into ABI breaking territory).

start with EMPTY_CLASS_EXPR in cp/expr.c::cxx_expand_expr()


Argh! Therefore const0_rtx means a zeroed (pseudo) register.

I would think that is a requirement for proper support for the kind of
refactorying you're doing. Ask a middle-end expert how to annotate
an expression nobody cares about.


Ok, let's think a bit more about this issue, humpf! Maybe, for the time being
better not pushing this refactoring too far, then.


My idea would be submitting a PR about this, and wait a bit for reactions. Indeed,
seems not too difficult, in principle, at least not zeroing that damn register basing
on an annotation. And, hopefully, something downstream will recognize that it's
not really used and will optimize it out.


Paolo.


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