[PATCH] D19667: [ubsan] Minimize size of data for type_mismatch
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Fri May 13 16:50:03 PDT 2016
rsmith added inline comments.
================
Comment at: lib/CodeGen/CGExpr.cpp:579
@@ -578,1 +578,3 @@
+ // Make sure we're not losing information. Alignment needs to be a power of 2
+ assert(!AlignVal || (uint64_t)1 << llvm::Log2_64(AlignVal) == AlignVal);
llvm::Constant *StaticData[] = {
----------------
filcab wrote:
> Would it be acceptable to set AlignVal to 1 if it's 0?
Yes, that seems fine. The alignment check will never fire if `AlignVal` is zero (that only happens if the type in question is incomplete, and we don't emit a check for it in that case). Setting it to 1 should prevent the runtime library from thinking that we detected an alignment problem.
It looks like the current patch will emit 255 as the alignment in that case; that also seems fine as a way of indicating "no alignment check". I doubt we'll ever need to deal with a real alignment value of 2^255 :)
http://reviews.llvm.org/D19667
More information about the cfe-commits
mailing list