[cfe-dev] Miscompilation of sizeof
Abramo Bagnara
abramo.bagnara at gmail.com
Sat Dec 10 12:52:19 PST 2011
Ping.
>
> In ASTContext:::getTypeInfo(const Type *T) const we have:
>
> uint64_t Width=0;
>
> case Type::ConstantArray: {
> const ConstantArrayType *CAT = cast<ConstantArrayType>(T);
>
> std::pair<uint64_t, unsigned> EltInfo =
> getTypeInfo(CAT->getElementType());
> Width = EltInfo.first*CAT->getSize().getZExtValue();
>
> But this multiplication can overflow (because for reasons that I don't
> known getTypeInfo return width specified in bits).
>
> If there are no objections I'd add an assert: probably we'll induce some
> crashes, but I believe that this would be *far* better than to
> miscompile the code (and assertions will be triggered only when code
> would be miscompiled).
>
More information about the cfe-dev
mailing list