[cfe-dev] False warning in recent clang
James Dennett
james.dennett at gmail.com
Fri Jun 22 04:59:35 PDT 2012
On Fri, Jun 22, 2012 at 4:30 AM, Konstantin Tokarev <annulen at yandex.ru> wrote:
> Hi all,
>
> After recent clang update I'm getting new warnings from Qt headers:
>
> /usr/local/Trolltech/Qt-4.8.0/include/QtCore/qsharedpointer_impl.h:595:43: warning: field is uninitialized when used here [-Wuninitialized]
> inline QWeakPointer(X *ptr) : d(ptr ? d->getAndRef(ptr) : 0), value(ptr)
> ^
>
> (caret is pointing at 'd' before '->getAndRef')
>
> Here is complete piece of subject code:
>
> template <class X>
> inline QWeakPointer(X *ptr) : d(ptr ? d->getAndRef(ptr) : 0), value(ptr)
> { }
>
> where getAndRef is static method, so value of d is not needed here. I assume this warning should not be emitted.
The warning seems valid, and the code should be fixed.
d->getAndRef(ptr) requires that d be evaluated even if getAndRef is
static, just as f()->getAndRef(ptr) would be required to call f(),
even though the result would be discarded.
-- James
More information about the cfe-dev
mailing list