aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/StringRefTest.cpp
diff options
context:
space:
mode:
authorVlad Serebrennikov <serebrennikov.vladislav@gmail.com>2024-08-21 17:38:24 +0400
committerGitHub <noreply@github.com>2024-08-21 17:38:24 +0400
commit281d17840c35a1d80303bb6170c253fe2411f95f (patch)
treea316c63fc94648d4cdd993bfeb04fdbbf244cebb /llvm/unittests/ADT/StringRefTest.cpp
parent76c07984257b49dcc4786fa9fb3918a2c1342e23 (diff)
downloadllvm-281d17840c35a1d80303bb6170c253fe2411f95f.zip
llvm-281d17840c35a1d80303bb6170c253fe2411f95f.tar.gz
llvm-281d17840c35a1d80303bb6170c253fe2411f95f.tar.bz2
[clang] Diagnose functions with too many parameters (#104833)
This patch adds a parser check when a function declaration or function type declaration (in a function pointer declaration, for example) has too many parameters for `FunctionTypeBits::NumParams` to hold. At the moment of writing it's a 16-bit-wide bit-field, limiting the number of parameters at 65536. The check is added in the parser loop that goes over comma-separated list of function parameters. This is not the solution Aaron suggested in https://github.com/llvm/llvm-project/issues/35741#issuecomment-1638086571, because it was found out that it's quite hard to recover from this particular error in `GetFullTypeForDeclarator()`. Multiple options were tried, but all of them led to crashes down the line. I used LLVM Compile Time Tracker to ensure this does not introduce a performance regression. I believe changes are in the noise: https://llvm-compile-time-tracker.com/compare.php?from=de5ea2d122c31e1551654ff506c33df299f351b8&to=424818620766cedb2770e076ee359afeb0cc14ec&stat=instructions:u Fixes #35741
Diffstat (limited to 'llvm/unittests/ADT/StringRefTest.cpp')
0 files changed, 0 insertions, 0 deletions