aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-05-08 02:12:03 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-05-08 02:12:03 +0000
commita3d3bd215bcd9dd39b547e8401b157cdbde7e6d0 (patch)
tree7b194437fb1c9f8534587270715c57fbb59f3ec0 /clang/lib/Frontend/CompilerInvocation.cpp
parent1aee70b7732c8816dfff17abfff87c047fe6646c (diff)
downloadllvm-a3d3bd215bcd9dd39b547e8401b157cdbde7e6d0.zip
llvm-a3d3bd215bcd9dd39b547e8401b157cdbde7e6d0.tar.gz
llvm-a3d3bd215bcd9dd39b547e8401b157cdbde7e6d0.tar.bz2
C++1y: Add a step limit to constexpr evaluation, to catch runaway loops.
llvm-svn: 181388
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 42ea96f..9c8eea1 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1251,6 +1251,8 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
Diags);
Opts.ConstexprCallDepth = Args.getLastArgIntValue(OPT_fconstexpr_depth, 512,
Diags);
+ Opts.ConstexprStepLimit = Args.getLastArgIntValue(OPT_fconstexpr_steps,
+ 1048576, Diags);
Opts.BracketDepth = Args.getLastArgIntValue(OPT_fbracket_depth, 256, Diags);
Opts.DelayedTemplateParsing = Args.hasArg(OPT_fdelayed_template_parsing);
Opts.NumLargeByValueCopy = Args.getLastArgIntValue(OPT_Wlarge_by_value_copy_EQ,