[llvm-bugs] [Bug 50178] New: Introduction of -fbracket-depth broke std::array:s longer than 256
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Apr 30 03:01:55 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=50178
Bug ID: 50178
Summary: Introduction of -fbracket-depth broke std::array:s
longer than 256
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: weiss at wsoptics.de
CC: blitzrakete at gmail.com, dgregor at apple.com,
erik.pilkington at gmail.com, llvm-bugs at lists.llvm.org,
richard-llvm at metafoo.co.uk
The code at the bottom behaves like this with clang-12:
% clang++ -std=c++17 -c b.cpp
In file included from b.cpp:1:
/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/g++-v10/array:245:52: fatal
error: instantiating fold expression with 257 arguments exceeded expression
nesting limit of 256
-> array<enable_if_t<(is_same_v<_Tp, _Up> && ...), _Tp>,
~~~~~~~~~~~~~~~~~~~~~~~~^~~~
b.cpp:6:12: note: while substituting deduced template arguments into function
template '<deduction guide for array>' [with _Tp = S, _Up = <S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S>]
std::array a{S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{},
^
1 error generated.
% clang++ -std=c++17 -c -fbracket-depth=512 b.cpp
% echo $?
0
This actually hit our production code and took me a while to reduce. I think
limiting the length of std::array to <= 256 by default is not desirable.
This is the code:
#include<array>
struct S {};
std::array a{S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{}, S{},
S{}};
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210430/ef2c5a20/attachment.html>
More information about the llvm-bugs
mailing list