[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