FailedChanges

Summary

  1. [GWP-ASan] Port tests to Fuchsia (details)
  2. [NPM] Add implicit basic-aa before other AA (details)
  3. MCExpr::evaluateAsRelocatableImpl : allow evaluation of non-VK_None MCSymbolRefExpr when MCAsmLayout is available (details)
  4. [flang] Improve error message on bad LOGICAL compare operations (details)
  5. [flang] Correct handling of null pointer initializers (details)
  6. [libc++] Clarify how we pick the typeinfo comparison (details)
  7. [RISCV] Use register class VR for V instruction operands directly. (details)
  8. Fix assert on valid due to incorrect assumption that a field name must (details)
  9. [mlir][Affine] Refactor affine fusion code in pass to utilities (details)
  10. [gn build] (manually) merge f0785c1f7ac (details)
  11. [tsan] Add pthread_cond_clockwait interceptor (details)
  12. [MachO] Update embedded part of ObjectFileMachO for Mangled API change (details)
  13. [VE] Add vmv intrinsic instructions (details)
  14. [YAMLIO] Add a generic YAML fuzzer harness (details)
  15. [YAMLIO] Support non-null-terminated inputs (details)
  16. [NPM] Remove -enable-npm-optnone flag (details)
  17. [hwasan] Fix Thread reuse (try 2). (details)
  18. Added GDB pretty printer for StringMap (details)
Commit 5556616b5b5223f95607ad94053a55f0deaf2762 by kostyak
[GWP-ASan] Port tests to Fuchsia

This modifies the tests so that they can be run on Fuchsia:
- add the necessary includes for `set`/`vector` etc
- do the few modifications required to use zxtest instead og gtest

`backtrace.cpp` requires stacktrace support that Fuchsia doesn't have
yet, and `enable_disable.cpp` currently uses `fork()` which Fuchsia
doesn't support yet. I'll revisit this later.

I chose to use `harness.h` to hold my "platform-specific" include and
namespace, and using this header in tests rather than `gtest.h`,
which I am open to change if someone would rather go another direction.

Differential Revision: https://reviews.llvm.org/D91575
The file was modifiedcompiler-rt/lib/gwp_asan/tests/late_init.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/alignment.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/compression.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/crash_handler_api.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/iterate.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/driver.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/harness.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/slot_reuse.cpp
The file was modifiedcompiler-rt/lib/gwp_asan/tests/harness.h
The file was modifiedcompiler-rt/lib/gwp_asan/tests/mutex_test.cpp
Commit e597116f055d2e82d9179f6edcb49dd015c514c2 by aeubanks
[NPM] Add implicit basic-aa before other AA

This matches the legacy AA infra and fixes
llvm/test/ANalysis/TypeBasedAliasAnalysis/precedence.ll under NPM.
The file was modifiedllvm/tools/opt/NewPMDriver.cpp
Commit 96d40df71ecee07c69aea512f6c04fc4fbe6acfb by i
MCExpr::evaluateAsRelocatableImpl : allow evaluation of non-VK_None MCSymbolRefExpr when MCAsmLayout is available

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4acf8c78e659833be8be047ba2f8561386a11d4b
(1994) introduced this behavior:
if a fixup symbol is equated to an expression with an undefined symbol, convert
the fixup to be against the target symbol. glibc relies on this behavior to perform
assembly level indirection

```
asm("memcpy = __GI_memcpy"); // from sysdeps/generic/symbol-hacks.h

...
  // call memcpy@PLT
  // The relocation references __GI_memcpy in GNU as, but memcpy in MC (without the patch)
  memcpy (...);
```

(1) It complements `extern __typeof(memcpy) memcpy asm("__GI_memcpy");` The frontend asm label does not redirect synthesized memcpy in the middle-end. (See D88712 for details)
(2) `asm("memcpy = __GI_memcpy");` is in every translation unit, but the memcpy declaration may not be visible in the translation unit where memcpy is synthesized.

MC already redirects `memcpy = __GI_memcpy; call memcpy` but not `memcpy = __GI_memcpy; call memcpy@plt`.
This patch fixes the latter by allowing MCExpr::evaluateAsRelocatableImpl to
evaluate a non-VK_None MCSymbolRefExpr, which is only done after the layout is available.

GNU as allows `memcpy = __GI_memcpy+1; call memcpy@PLT` which seems nonsensical, so we don't allow it.

`MC/PowerPC/pr38945.s` `NUMBER = 0x6ffffff9; cmpwi 8,NUMBER@l` requires the
`symbol@l` form in AsmMatcher, so evaluation needs to be deferred. This is the
place whether future simplification may be possible.

Note, if we suppress the VM_None evaluation when MCAsmLayout is nullptr, we may
lose the `invalid reassignment of non-absolute variable` diagnostic
(`ARM/thumb_set-diagnostics.s` and `MC/AsmParser/variables-invalid.s`).
We know that this diagnostic is troublesome in some cases
(https://github.com/ClangBuiltLinux/linux/issues/1008), so we can consider
making simplification in the future.

Reviewed By: jyknight

Differential Revision: https://reviews.llvm.org/D88625
The file was addedllvm/test/MC/ELF/relocation-alias.s
The file was modifiedllvm/test/MC/ELF/relocation.s
The file was modifiedllvm/lib/MC/MCExpr.cpp
The file was modifiedllvm/test/MC/ARM/ehabi-personality-abs.s
Commit ea4973f2068abfbfd637ed446c18fe2191301cad by psteinfeld
[flang] Improve error message on bad LOGICAL compare operations

When comparing LOGICAL operands using ".eq." or ".ne." we were not
guiding users to the ".eqv." and ".neqv." operations.

Differential Revision: https://reviews.llvm.org/D91736
The file was addedflang/test/Semantics/resolve98.f90
The file was modifiedflang/lib/Semantics/expression.cpp
Commit 5349f99114cfcf597220cbc9b9253f178a43fabd by pklausler
[flang] Correct handling of null pointer initializers

Fortran defines "null-init" null pointer initializers as
being function references, syntactically, that have to resolve
to calls to the intrinsic function NULL() with no actual
arguments.

Differential revision: https://reviews.llvm.org/D91657
The file was modifiedflang/test/Semantics/symbol15.f90
The file was modifiedflang/lib/Semantics/expression.cpp
The file was addedflang/test/Semantics/null-init.f90
The file was modifiedflang/lib/Evaluate/check-expression.cpp
The file was modifiedflang/lib/Semantics/data-to-inits.cpp
The file was modifiedflang/include/flang/Parser/parse-tree.h
The file was modifiedflang/test/Semantics/modfile20.f90
The file was modifiedflang/include/flang/Semantics/expression.h
The file was modifiedflang/docs/f2018-grammar.md
The file was modifiedflang/lib/Parser/Fortran-parsers.cpp
The file was modifiedflang/lib/Semantics/resolve-names.cpp
Commit be00e8893fdb814e67d8f06401afe869f878c4cf by Louis Dionne
[libc++] Clarify how we pick the typeinfo comparison

This commit makes it clear that the typeinfo comparison implementation
is automatically selected by default, and that the CMake option only
overrides the value. This has been a source of confusion and bugs ever
since we've introduced complexity in that area, so I'm trying to simplify
it while still allowing for some control on the implementation.

Differential Revision: https://reviews.llvm.org/D91574
The file was modifiedlibcxx/include/__config_site.in
The file was modifiedlibcxx/CMakeLists.txt
The file was modifiedlibcxx/docs/BuildingLibcxx.rst
The file was modifiedlibcxx/include/__config
The file was modifiedlibcxx/include/typeinfo
The file was modifiedlibcxx/cmake/caches/Apple.cmake
Commit 44cd03ad041e136b5fb1f512f470b1bfe1c49aad by kai.wang
[RISCV] Use register class VR for V instruction operands directly.

@tangxingxin1008 found a bug that regard vadd.vv v1, v3, a0 as a valid V
instruction. We should remove the VRegAsmOperand operand class and use
VR register class directly.

Patched by: tangxingxin1008, Hsiangkai
Differential Revision: https://reviews.llvm.org/D91712
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoV.td
The file was modifiedllvm/test/MC/RISCV/rvv/invalid.s
Commit 5f2c5541f78750c21004e0172f13db4632966fd3 by richard
Fix assert on valid due to incorrect assumption that a field name must
be unique in its scope.
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp
The file was addedclang/test/SemaTemplate/default-member-init.cpp
Commit c1ba9c43adb7ee101048e88ab33c94a1ceda398e by diego.caballero
[mlir][Affine] Refactor affine fusion code in pass to utilities

Refactoring/clean-up step needed to add support for producer-consumer fusion
with multi-store producer loops and, in general, to implement more general
loop fusion strategies in Affine. It introduces the following changes:
  - AffineLoopFusion pass now uses loop fusion utilities more broadly to compute
    fusion legality (canFuseLoops utility) and perform the fusion transformation
    (fuseLoops utility).
  - Loop fusion utilities have been extended to deal with AffineLoopFusion
    requirements and assumptions while preserving both loop fusion utilities and
    AffineLoopFusion current functionality within a unified implementation.
    'FusionStrategy' has been introduced for this purpose and, in the future, it
    will allow us to have a single loop fusion core implementation that will produce
    different fusion outputs depending on the strategy used.
  - Improve separation of concerns for legality and profitability analysis:
    'isFusionProfitable' no longer filters out illegal scenarios that 'canFuse'
    didn't detect, or the other way around. 'canFuse' now takes loop dependences
    into account to determine the fusion loop depth (producer-consumer fusion only).
  - As a result, maximal fusion now doesn't require any profitability analysis.
  - Slices are now computed only once and reused across the legality, profitability
    and fusion transformation steps (producer-consumer).
  - Refactor some utilities and remove redundant copies of them.

This patch is NFCI and should preserve the existing functionality of both the
AffineLoopFusion pass and the affine fusion utilities.

Reviewed By: andydavis1, bondhugula

Differential Revision: https://reviews.llvm.org/D90798
The file was modifiedmlir/lib/Transforms/LoopFusion.cpp
The file was modifiedmlir/include/mlir/Analysis/Utils.h
The file was modifiedmlir/include/mlir/Transforms/LoopFusionUtils.h
The file was modifiedmlir/lib/Transforms/Utils/LoopFusionUtils.cpp
The file was modifiedmlir/lib/Analysis/Utils.cpp
The file was modifiedmlir/test/lib/Transforms/TestLoopFusion.cpp
Commit 5824a572adb57b0437b540b61116ca5e8c9fcace by thakis
[gn build] (manually) merge f0785c1f7ac
The file was modifiedllvm/utils/gn/secondary/libcxx/include/BUILD.gn
Commit 0e2585c8042bd6ce4eca1333c64234adac7487f2 by Vitaly Buka
[tsan] Add pthread_cond_clockwait interceptor

Disable the test on old systems.
pthread_cond_clockwait is supported by glibc-2.30.
It also supported by Android api 30 even though we
do not run tsan on Android.

Fixes https://github.com/google/sanitizers/issues/1259

Reviewed By: dvyukov
The file was addedcompiler-rt/test/tsan/Linux/clockwait_double_lock.c
The file was modifiedcompiler-rt/test/lit.common.cfg.py
The file was modifiedcompiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
Commit f3aa9e36d91b7b0f4f24f7a3b13cf80c11356e5e by Jonas Devlieghere
[MachO] Update embedded part of ObjectFileMachO for Mangled API change

Mangled::GetName and Mangled::GetDemangledName no longer take any
arguments.
The file was modifiedlldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
Commit 132d6d73ea024beab3df99df2ecf4d345995fdfd by marukawa
[VE] Add vmv intrinsic instructions

Add vmv intrinsic instructions and regression tests.

Reviewed By: simoll

Differential Revision: https://reviews.llvm.org/D91700
The file was modifiedllvm/lib/Target/VE/VEInstrIntrinsicVL.gen.td
The file was modifiedllvm/include/llvm/IR/IntrinsicsVEVL.gen.td
The file was addedllvm/test/CodeGen/VE/VELIntrinsics/vmv.ll
Commit 544cb649d7789a4199e8acea6e8a9da1409702b1 by scott.linder
[YAMLIO] Add a generic YAML fuzzer harness

This is essentially a clone of the existing fuzzer added in D50839, but
for the whole parser Streamer, and currently only testing for sanitizer
violations.

Differential Revision: https://reviews.llvm.org/D91573
The file was addedllvm/tools/llvm-yaml-parser-fuzzer/CMakeLists.txt
The file was addedllvm/tools/llvm-yaml-parser-fuzzer/yaml-parser-fuzzer.cpp
The file was addedllvm/tools/llvm-yaml-parser-fuzzer/DummyYAMLParserFuzzer.cpp
Commit 2980933d850b7506a1a96f8d11588b71956f4089 by scott.linder
[YAMLIO] Support non-null-terminated inputs

In some places the parser guards against dereferencing `End`, while in
others it relies on the presence of a trailing `'\0'` to elide checks.

Add the remaining guards needed to ensure the parser never attempts to
dereference `End`, making it safe to not require a null-terminated input
buffer.

Update the parser fuzzer harness so that it tests with buffers that are
guaranteed to be non-null-terminated, null-terminated, and 1-terminated,
additionally ensuring the result of the parse is the same in each case.

Some of the regression tests were written by inspection, and some are
cases caught by the fuzzer which required additional fixes in the
parser.

Differential Revision: https://reviews.llvm.org/D84050
The file was modifiedllvm/tools/llvm-yaml-parser-fuzzer/yaml-parser-fuzzer.cpp
The file was modifiedllvm/unittests/Support/YAMLIOTest.cpp
The file was modifiedllvm/lib/Support/YAMLParser.cpp
Commit 67f16e9e91f2f07cdb9813b60c195f5a1cd1f57d by aeubanks
[NPM] Remove -enable-npm-optnone flag

It has been on by default for a couple months without complaint.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D91743
The file was modifiedllvm/lib/Passes/StandardInstrumentations.cpp
The file was modifiedclang/test/CodeGen/no-skipped-passes-O0-opt-bisect.c
The file was modifiedllvm/test/Feature/optnone-opt.ll
The file was modifiedclang/test/CodeGen/aggregate-assign-call.c
Commit 523cc097fdafa1bb60373dcc70df7dfd31551f56 by eugenis
[hwasan] Fix Thread reuse (try 2).

HwasanThreadList::DontNeedThread clobbers Thread::next_,
Breaking the freelist. As a result, only the top of the freelist ever
gets reused, and the rest of it is lost.

Since the Thread object with its associated ring buffer is only 8Kb, this is
typically only noticable in long running processes, such as fuzzers.

Fix the problem by switching from an intrusive linked list to a vector.

Differential Revision: https://reviews.llvm.org/D91392
The file was modifiedcompiler-rt/lib/hwasan/hwasan_thread.h
The file was modifiedcompiler-rt/lib/hwasan/hwasan_thread_list.h
The file was modifiedcompiler-rt/test/hwasan/TestCases/thread-uaf.c
The file was addedcompiler-rt/test/hwasan/TestCases/Linux/reuse-threads.cpp
Commit 5747380772e0bbf5762e5ed9c39e6c9265bafc87 by dblaikie
Added GDB pretty printer for StringMap

Reviewed By: csigg, dblaikie

Differential Revision: https://reviews.llvm.org/D91183
The file was modifiedllvm/utils/gdb-scripts/prettyprinters.py
The file was modifiedllvm/include/llvm/ADT/StringMap.h
The file was modifieddebuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb
The file was modifieddebuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp