Commit Graph

6 Commits

Author SHA1 Message Date
Vitaly Buka fae656b2dd [test] Add 'hwasan' feature and disable a test 2022-08-17 23:50:35 -07:00
Sam McCall 3ad32df72e
Fix lit feature name in 9dc4af327b 2021-12-29 13:18:11 +01:00
Sam McCall 9dc4af327b Re-land "[clang] Add early exit when checking for const init of arrays."
This reverts commit 6d09aaecdf.

The test uses ulimit and ran into problems on some bots. Run on linux only.
There's nothing platform-specific about the code we're testing, so this
should be enough to ensure correctness.
2021-12-29 13:07:30 +01:00
Adam Czachorowski 6d09aaecdf Revert "[clang] Add early exit when checking for const init of arrays."
This reverts commit 48bb5f4cbe.

Several breakages, including ARM (fixed later, but not sufficient) and
MSan (to be diagnosed later).

Differential Revision: https://reviews.llvm.org/D113599
2021-11-10 20:59:35 +01:00
Adam Czachorowski 581a6a8118 [clang] Fix armv7-quick build by hardcoding -triple=x86_64 in OOM test.
The test was added in 48bb5f4cbe and it
creates a very large array, which is too large for ARM. Making the array
smaller is not a good option, since we would need a very low ulimit and
could then hit it for other reasons.

Should fix the https://lab.llvm.org/buildbot/#/builders/171/builds/5851
failure.

Differential Revision: https://reviews.llvm.org/D113583
2021-11-10 19:24:06 +01:00
Adam Czachorowski 48bb5f4cbe [clang] Add early exit when checking for const init of arrays.
Before this commit, on code like:

  struct S { ... };
  S arr[10000000];

while checking if arr is constexpr, clang would reserve memory for
arr before running constructor for S. If S turned out to not have a
valid constexpr c-tor, clang would still try to initialize each element
(and, in case the c-tor was trivial, even skipping the constexpr step
limit), only to discard that whole APValue later, since the first
element generated a diagnostic.

With this change, we start by allocating just 1 element in the array to
try out the c-tor and take an early exit if any diagnostics are
generated, avoiding possibly large memory allocation and a lot of work
initializing to-be-discarded APValues.

Fixes 51712 and 51843.

In the future we may want to be smarter about large possibly-constexrp
arrays and maybe make the allocation lazy.

Differential Revision: https://reviews.llvm.org/D113120
2021-11-10 18:11:21 +01:00