cppcoreguidelines-pro-bounds-constant-array-index: crash for value dependent index...
authorMatthias Gehre <M.Gehre@gmx.de>
Thu, 14 Jul 2016 20:00:48 +0000 (20:00 +0000)
committerMatthias Gehre <M.Gehre@gmx.de>
Thu, 14 Jul 2016 20:00:48 +0000 (20:00 +0000)
commit03fadabe47e8441c7d29db0314e79eddadeff969
tree5c3d08d6c3071596a88f7e1415e8df8a6d4c0f06
parent488f861b836abcb08202a273f1839ca8c81cd14e
cppcoreguidelines-pro-bounds-constant-array-index: crash for value dependent index in c++03 mode

Summary:
When the expression is value dependent,
isIntegerConstantExpr() crashes in C++03 mode with
 ../tools/clang/lib/AST/ExprConstant.cpp:9330: (anonymous namespace)::ICEDiag CheckICE(const clang::Expr *, const clang::ASTContext &):
  Assertion `!E->isValueDependent() && "Should not see value dependent exprs!"' failed.
In C++11 mode, that assert does not trigger.

This commit works around this in the check. We don't check
value-dependent indices and instead check their specialization.

Reviewers: alexfh, aaron.ballman

Subscribers: nemanjai, cfe-commits

Differential Revision: http://reviews.llvm.org/D22190

llvm-svn: 275461
clang-tools-extra/clang-tidy/cppcoreguidelines/ProBoundsConstantArrayIndexCheck.cpp
clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-c++03.cpp [new file with mode: 0644]