mirror of
https://github.com/intel/llvm.git
synced 2026-01-22 23:49:22 +08:00
Remove hacky temporary fix of r151585.
llvm-svn: 152818
This commit is contained in:
@@ -107,11 +107,6 @@ def note_constexpr_calls_suppressed : Note<
|
||||
"see all)">;
|
||||
def note_constexpr_call_here : Note<"in call to '%0'">;
|
||||
|
||||
// FIXME: See EvalInfo::IntExprEvaluatorDepth.
|
||||
def err_intexpr_depth_limit_exceeded : Error<
|
||||
"integer expression evaluation exceeded maximum sub-expression depth">,
|
||||
DefaultFatal; // avoid emitting it multiple times for the same parent expr.
|
||||
|
||||
// inline asm related.
|
||||
let CategoryName = "Inline Assembly Issue" in {
|
||||
def err_asm_invalid_escape : Error<
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
#include "clang/Basic/Builtins.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/Support/SaveAndRestore.h"
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
|
||||
@@ -388,18 +387,12 @@ namespace {
|
||||
/// are suppressed.
|
||||
bool CheckingPotentialConstantExpression;
|
||||
|
||||
/// \brief Stack depth of IntExprEvaluator.
|
||||
/// We check this against a maximum value to avoid stack overflow, see
|
||||
/// test case in test/Sema/many-logical-ops.c.
|
||||
// FIXME: This is a hack; handle properly unlimited logical ops.
|
||||
unsigned IntExprEvaluatorDepth;
|
||||
|
||||
EvalInfo(const ASTContext &C, Expr::EvalStatus &S)
|
||||
: Ctx(const_cast<ASTContext&>(C)), EvalStatus(S), CurrentCall(0),
|
||||
CallStackDepth(0), NextCallIndex(1),
|
||||
BottomFrame(*this, SourceLocation(), 0, 0, 0),
|
||||
EvaluatingDecl(0), EvaluatingDeclValue(0), HasActiveDiagnostic(false),
|
||||
CheckingPotentialConstantExpression(false), IntExprEvaluatorDepth(0) {}
|
||||
CheckingPotentialConstantExpression(false) {}
|
||||
|
||||
const APValue *getOpaqueValue(const OpaqueValueExpr *e) const {
|
||||
MapTy::const_iterator i = OpaqueValues.find(e);
|
||||
@@ -4008,20 +4001,6 @@ public:
|
||||
|
||||
bool ZeroInitialization(const Expr *E) { return Success(0, E); }
|
||||
|
||||
// FIXME: See EvalInfo::IntExprEvaluatorDepth.
|
||||
bool Visit(const Expr *E) {
|
||||
SaveAndRestore<unsigned> Depth(Info.IntExprEvaluatorDepth,
|
||||
Info.IntExprEvaluatorDepth+1);
|
||||
const unsigned MaxDepth = 512;
|
||||
if (Depth.get() > MaxDepth) {
|
||||
Info.Ctx.getDiagnostics().Report(E->getExprLoc(),
|
||||
diag::err_intexpr_depth_limit_exceeded);
|
||||
return false;
|
||||
}
|
||||
|
||||
return ExprEvaluatorBaseTy::Visit(E);
|
||||
}
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Visitor Methods
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
||||
Reference in New Issue
Block a user