[PATCH] D15097: [Sema] Issue a warning for integer overflow in struct initializer
Akira Hatanaka via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 11 09:25:53 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL257357: [Sema] Issue a warning for integer overflow in struct initializer (authored by ahatanak).
Changed prior to commit:
http://reviews.llvm.org/D15097?vs=41451&id=44521#toc
Repository:
rL LLVM
http://reviews.llvm.org/D15097
Files:
cfe/trunk/lib/Sema/SemaChecking.cpp
cfe/trunk/test/Sema/integer-overflow.c
Index: cfe/trunk/lib/Sema/SemaChecking.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaChecking.cpp
+++ cfe/trunk/lib/Sema/SemaChecking.cpp
@@ -7853,6 +7853,10 @@
void Sema::CheckForIntOverflow (Expr *E) {
if (isa<BinaryOperator>(E->IgnoreParenCasts()))
E->IgnoreParenCasts()->EvaluateForOverflow(Context);
+ else if (auto InitList = dyn_cast<InitListExpr>(E))
+ for (Expr *E : InitList->inits())
+ if (isa<BinaryOperator>(E->IgnoreParenCasts()))
+ E->IgnoreParenCasts()->EvaluateForOverflow(Context);
}
namespace {
Index: cfe/trunk/test/Sema/integer-overflow.c
===================================================================
--- cfe/trunk/test/Sema/integer-overflow.c
+++ cfe/trunk/test/Sema/integer-overflow.c
@@ -145,3 +145,11 @@
// expected-warning at +1 2{{overflow in expression; result is 536870912 with type 'int'}}
return ((4608 * 1024 * 1024) + ((uint64_t)(4608 * 1024 * 1024)));
}
+
+struct s {
+ unsigned x;
+ unsigned y;
+} s = {
+ .y = 5,
+ .x = 4 * 1024 * 1024 * 1024 // expected-warning {{overflow in expression; result is 0 with type 'int'}}
+};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15097.44521.patch
Type: text/x-patch
Size: 1154 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160111/efd54620/attachment.bin>
More information about the cfe-commits
mailing list