Rohan:
Because no one more-authoritative has answered you,
I'll give it a try.
I think that this occurs because QVariant must have
sufficiently-strict alignment constraints to hold,
properly aligned, the largest POD datum that can be
stored in the variant. Other, more-specific objects
may be known to not have such a large POD datum
within them and so may have looser alignment
requirements.
When the more-loosely aligned object is cast to an
object type with tighter alignment constraints, the
compiler objects.
In this exact case, it doesn't look like it will hurt
you, but I think it would be good to code this in
such a way as to avoid the warning (without disabling
the warning). Unfortunately, I have no advice on how
to do this.
Atlant
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf
Of Rohan McGovern
Sent: Tuesday, March 06, 2012 18:35
To: development
Subject: [Development] cast ... increases required alignment of target type
[-Werror=cast-align]
Does anyone have a suggestion on how to fix this warning?
This code in qlist.h:
409: template <typename T>
410: Q_INLINE_TEMPLATE void QList<T>::node_destruct(Node *from, Node *to)
411: {
412: if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
413: while(from != to) --to, delete reinterpret_cast<T*>(to->v);
414: else if (QTypeInfo<T>::isComplex)
415: while (from != to) --to, reinterpret_cast<T*>(to)->~T();
416: }
...when compiled for ARM, causes this warning (or error with -Werror):
src/corelib/tools/qlist.h: In member function ‘void
QList<T>::node_destruct(QList<T>::Node*, QList<T>::Node*) [with T = QVariant]’:
src/corelib/tools/qlist.h:738:5: instantiated from ‘void
QList<T>::dealloc(QListData::Data*) [with T = QVariant]’
src/corelib/tools/qlist.h:714:9: instantiated from ‘QList<T>::~QList()
[with T = QVariant]’
src/corelib/statemachine/qstatemachine.h:81:59: instantiated from here
src/corelib/tools/qlist.h:415:28: error: cast from ‘QList<QVariant>::Node*’
to ‘QVariant*’ increases required alignment of target type [-Werror=cast-align]
"do not compile with -Wcast-align" may be a valid answer, but it would
be good to hear from someone who can confidently say whether or not this
issue can actually harm us in practice.
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development
Click
https://www.mailcontrol.com/sr/QilNO59cSRvTndxI!oX7UsdpzMR7Bo2K9vbOG+MDi5IDPn0IJCwStGrlGy1xFX8KHjzlD+HXh2sua8zCo+pDiw==
to report this email as spam.
This e-mail and the information, including any attachments, it contains are
intended to be a confidential communication only to the person or entity to
whom it is addressed and may contain information that is privileged. If the
reader of this message is not the intended recipient, you are hereby notified
that any dissemination, distribution or copying of this communication is
strictly prohibited. If you have received this communication in error, please
immediately notify the sender and destroy the original message.
Thank you.
Please consider the environment before printing this email.
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development