<table><tr><td style="">kossebau added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D13900">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D13900#287658" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D13900#287658</a>, <a href="https://phabricator.kde.org/p/kfunk/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@kfunk</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>What was the exact warning message to begin with? Can't this be fixed differently (i.e. without using the PP)?</p></div>
</blockquote>

<p>Find below a sample warning message per each entry.</p>

<p>I have no deep understanding of the actual code, all seem more elaborated low-level memory magic to me, which though has existed for years without (known?) issues, so my motivation to try to rewrite it using proper (modern?) C++ expressions is rather low :) Perhaps worth a comment, but then I have no idea what to write besides "Dear clever code reader, please consider to rewrite this code using normal C++ class code" which though is IMHO an implicit with most/any given diagnostic pragmas ;) But feel challenged to be the clever code reader now :P I know it's just me to keep fingers from keyboard here.</p>

<p>And the code from the affected headers is used quite often, which messes up the log build with the warnings quite a lot. Thus a bigger motivation to just silence those warnings down, given no-one might be able to do something soon, so it's useless log pain making one miss other more real issues.</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">[ 30%] Building CXX object kdevplatform/language/CMakeFiles/KDevPlatformLanguage.dir/duchain/topducontext.cpp.o
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/util/basicsetrepository.h:21,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/util/setrepository.h:17,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontext.h:24,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontext.cpp:20:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h: In instantiation of ‘void KDevelop::Bucket<Item, ItemRequest, markForReferenceCounting, fixedItemSize>::deleteItem(short unsigned int, unsigned int, Repository&) [with Repository = KDevelop::ItemRepository<Utils::SetNodeData, Utils::SetNodeDataRequest, false, false, 24>; Item = Utils::SetNodeData; ItemRequest = Utils::SetNodeDataRequest; bool markForReferenceCounting = false; unsigned int fixedItemSize = 24]’:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:675:15:   required from ‘int KDevelop::Bucket<Item, ItemRequest, markForReferenceCounting, fixedItemSize>::finalCleanup(Repository&) [with Repository = KDevelop::ItemRepository<Utils::SetNodeData, Utils::SetNodeDataRequest, false, false, 24>; Item = Utils::SetNodeData; ItemRequest = Utils::SetNodeDataRequest; bool markForReferenceCounting = false; unsigned int fixedItemSize = 24]’
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:2070:17:   required from ‘int KDevelop::ItemRepository<Item, ItemRequest, markForReferenceCounting, threadSafe, fixedItemSize, targetBucketHashSize>::finalCleanup() [with Item = Utils::SetNodeData; ItemRequest = Utils::SetNodeDataRequest; bool markForReferenceCounting = false; bool threadSafe = false; unsigned int fixedItemSize = 24; unsigned int targetBucketHashSize = 1048576]’
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:2063:7:   required from here
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/serialization/itemrepository.h:564:13: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct Utils::SetNodeData’; use assignment or value-initialization instead [-Wclass-memaccess]
       memset(item, 0, size); //For debugging, so we notice the data is wrong
       ~~~~~~^~~~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/util/setrepository.h:17,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontext.h:24,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontext.cpp:20:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/util/basicsetrepository.h:61:36: note: ‘struct Utils::SetNodeData’ declared here
 struct KDEVPLATFORMLANGUAGE_EXPORT SetNodeData {
                                    ^~~~~~~~~~~</pre></div>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">[ 30%] Building CXX object kdevplatform/language/CMakeFiles/KDevPlatformLanguage.dir/duchain/topducontextdynamicdata.cpp.o
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp: In function ‘void {anonymous}::saveDUChainItem(QVector<KDevelop::TopDUContextDynamicData::ArrayWithPosition>&, KDevelop::DUChainBase&, uint&, bool)’:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:93:40: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘class KDevelop::DUChainBaseData’; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
     memcpy(&target, item.d_func(), size);
                                        ^
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/problem.h:28,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.h:24,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:21:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/duchainbase.h:59:35: note: ‘class KDevelop::DUChainBaseData’ declared here
 class KDEVPLATFORMLANGUAGE_EXPORT DUChainBaseData {
                                   ^~~~~~~~~~~~~~~
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp: In member function ‘KDevelop::TopDUContextDynamicData::ItemDataInfo KDevelop::TopDUContextDynamicData::writeDataInfo(const KDevelop::TopDUContextDynamicData::ItemDataInfo&, const KDevelop::DUChainBaseData*, uint&)’:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:768:28: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘class KDevelop::DUChainBaseData’; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
   memcpy(target, data, size);
                            ^
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/problem.h:28,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.h:24,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:21:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/duchainbase.h:59:35: note: ‘class KDevelop::DUChainBaseData’ declared here
 class KDEVPLATFORMLANGUAGE_EXPORT DUChainBaseData {
                                   ^~~~~~~~~~~~~~~</pre></div>



<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:27:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h: In instantiation of ‘bool KDevelop::EmbeddedTreeAddItem<Data, ItemHandler, increaseFraction, rebuildIfInsertionMoreExpensive>::insertSorted(const Data&, int, int, int, bool) [with Data = KDevelop::CodeModelItem; ItemHandler = KDevelop::CodeModelItemHandler; int increaseFraction = 5; int rebuildIfInsertionMoreExpensive = 20]’:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h:505:22:   required from ‘bool KDevelop::EmbeddedTreeAddItem<Data, ItemHandler, increaseFraction, rebuildIfInsertionMoreExpensive>::apply(bool) [with Data = KDevelop::CodeModelItem; ItemHandler = KDevelop::CodeModelItemHandler; int increaseFraction = 5; int rebuildIfInsertionMoreExpensive = 20]’
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h:248:33:   required from ‘KDevelop::EmbeddedTreeAddItem<Data, ItemHandler, increaseFraction, rebuildIfInsertionMoreExpensive>::EmbeddedTreeAddItem(Data*, uint, int&, const Data&) [with Data = KDevelop::CodeModelItem; ItemHandler = KDevelop::CodeModelItemHandler; int increaseFraction = 5; int rebuildIfInsertionMoreExpensive = 20; uint = unsigned int]’
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:201:140:   required from here
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h:700:28: warning: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘struct KDevelop::CodeModelItem’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
                     memmove(m_items+bound+1, m_items+bound, sizeof(Data)*(pos-bound));
                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:19:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.h:35:10: note: ‘struct KDevelop::CodeModelItem’ declared here
   struct CodeModelItem
          ^~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:27:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h:709:28: warning: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘struct KDevelop::CodeModelItem’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
                     memmove(m_items+pos, m_items+pos+1, sizeof(Data)*(bound-pos-1));
                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:19:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.h:35:10: note: ‘struct KDevelop::CodeModelItem’ declared here
   struct CodeModelItem
          ^~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:27:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/util/embeddedfreetree.h:712:22: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct KDevelop::CodeModelItem’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
                memcpy(m_items+target, backup, sizeof(Data));
                ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.cpp:19:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/kdevplatform/language/duchain/codemodel.h:35:10: note: ‘struct KDevelop::CodeModelItem’ declared here
   struct CodeModelItem
          ^~~~~~~~~~~~~</pre></div>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/plugins/qmljs/3rdparty/qtcreator-libs/qmljs/parser/qmljsparser.cpp: In member function ‘void QmlJS::Parser::reallocateStack()’:
/home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/plugins/qmljs/3rdparty/qtcreator-libs/qmljs/parser/qmljsparser.cpp:76:104: warning: ‘void* realloc(void*, size_t)’ moving an object of non-trivially copyable type ‘class QStringRef’; use ‘new’ and ‘delete’ instead [-Wclass-memaccess]
     string_stack = reinterpret_cast<QStringRef*> (realloc(string_stack, stack_size * sizeof(QStringRef)));
                                                                                                        ^
In file included from /usr/include/qt5/QtCore/qhashfunctions.h:44,
                 from /usr/include/qt5/QtCore/qlist.h:47,
                 from /usr/include/qt5/QtCore/qhash.h:46,
                 from /usr/include/qt5/QtCore/qshareddata.h:46,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/plugins/qmljs/3rdparty/qtcreator-libs/qmljs/parser/qmljsmemorypool_p.h:48,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/plugins/qmljs/3rdparty/qtcreator-libs/qmljs/parser/qmljsengine_p.h:47,
                 from /home/koder/Kode/kdegit/kf5/extragear/kdevelop/kdevelop/plugins/qmljs/3rdparty/qtcreator-libs/qmljs/parser/qmljsparser.cpp:31:
/usr/include/qt5/QtCore/qstring.h:1418:21: note: ‘class QStringRef’ declared here
 class Q_CORE_EXPORT QStringRef {
                     ^~~~~~~~~~</pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D13900">https://phabricator.kde.org/D13900</a></div></div><br /><div><strong>To: </strong>kossebau, KDevelop<br /><strong>Cc: </strong>kfunk, kdevelop-devel, antismap, iodelay, vbspam, njensen, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd<br /></div>