aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorErich Keane <erich.keane@intel.com>2022-10-31 08:43:08 -0700
committerErich Keane <erich.keane@intel.com>2022-11-01 12:18:58 -0700
commit2cee2663338ee65ff5786432c30ba22c8dcd711b (patch)
tree3d805d6b450d3c9ab332d59999e0ed81ddc1a796 /clang/lib/Frontend/CompilerInvocation.cpp
parent72ba2489f2c7b0a911bd23e50aaaca6eae9a183e (diff)
downloadllvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.zip
llvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.tar.gz
llvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.tar.bz2
[Concepts] Correctly handle failure when checking concepts recursively
Based on discussion on the core reflector, it was made clear that a concept that depends on itself should be a hard error, not a constraint failure. This patch implements a stack of constraint-checks-in-progress to make sure we quit, rather than hitting stack-exhaustion. Note that we DO need to be careful to make sure we still check constraints properly that are caused by a previous constraint, but not derived from (such as when a check causes us to check special member function generation), so we cannot use the existing logic to see if this is being instantiated. This fixes https://github.com/llvm/llvm-project/issues/44304 and https://github.com/llvm/llvm-project/issues/50891. Differential Revision: https://reviews.llvm.org/D136975
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions