Clang warnings in itemrepository.h: cast from 'char *' to ... increases required alignment

Milian Wolff mail at
Sat Aug 3 23:40:19 UTC 2013

On Sunday 04 August 2013 01:25:19 Milian Wolff wrote:
> Hey all,
> I'm nowadays building KDevelop with clang to great success. Highly annoying
> though are warnings like these which get emitted _everywhere_:
> /home/milian/projects/compiled/kde4/include/kdevplatform/language/duchain/re
> positories/itemrepository.h:178:25: warning: cast from 'char *' to 'unsigned
> short *' increases required alignment from 1 to 2 [-Wcast-align]
>           m_objectMap = (short unsigned int*)current;
>                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> This comes with ca. 20 additional lines of context information for multiple
> locations in itemrepository.h. Since that is included in many files, we get
> tons of these warnings. If I make a compile error, I actually have to search
> very hard for the error messages now, since they get drowned in all these
> warnings. Bad, that makes me unproductive :(
> So, lets do the right thing and fix these issues, right?! But how?
> Especially an issue I see is that we get data from either QFile::map (i.e.
> uchar*) or just read it directly from QIODevice/QFile (i.e. char*).
> Afterwards we read all kinds of serialized data there (remember, the speed
> of our serialization is just because we do more or less 1to1 memory
> dumps!). So how can I ever "safely" read something like an int from a
> char*? It will always be a potential alignment increase, right? How can I
> shut this warning up?

Apparently with a fair dose of reinterpret_cast<>() instead of c-style casts.

Still, isn't the issue that clang warns us about here relevant? Sure, we don't 
run on ARM hardware anyways, but besides that? Should one fix anything here?

Milian Wolff
mail at

More information about the KDevelop-devel mailing list