Changes

Summary

  1. [OpenCL] Enables .rgba vector extension in C++ for OpenCL 2021 (details)
  2. [llvm cmake] replace tabs with spaces in config-ix.cmake (details)
  3. [Windows build] Use "DIA SDK" in sysroot (details)
  4. [Dexter] Improve performance by evaluating expressions only when needed (details)
  5. Cleanup identifier parsing; NFC (details)
  6. [lldb/test] Start pexpect tests with a custom HOME (details)
  7. AMDGPU: Avoid relying on an undef value in test (details)
  8. Remove incorrect comment in getSingleUndroppableUse. NFC (details)
  9. [PowerPC] Exploit Prefixed Load/Stores using the refactored Load/Store Implementation (details)
  10. [WebAssembly] Allow import and export of TLS symbols between DSOs (details)
  11. [clangd] Ignore ObjC `id` and `instancetype` in FindTarget (details)
  12. Fix a unittest file after D108695 when Z3 is enabled (details)
  13. Fix test failure created by ef8c9135efcb (details)
  14. [IR] Reduce max supported integer from 2^24-1 to 2^23. (details)
  15. clang-tidy: introduce readability-containter-data-pointer check (details)
Commit 09dc454b00b8ed0a19f766f760fa19e86a0b9059 by Justas.Janickas
[OpenCL] Enables .rgba vector extension in C++ for OpenCL 2021

`.rgba` vector extension setting in C++ for OpenCL 2021 is now
performed analogously to OpenCL C 3.0. Test case added.

Differential Revision: https://reviews.llvm.org/D109370
The file was modifiedclang/test/SemaOpenCL/ext_vectors.cl
The file was modifiedclang/lib/Sema/SemaExprMember.cpp
Commit f78f613bb74ca837be36efcc72105c3c2d54b4f3 by thakis
[llvm cmake] replace tabs with spaces in config-ix.cmake
The file was modifiedllvm/cmake/config-ix.cmake
Commit 8cfab5de13a8ec3a2ffccb1b94b0165512a33552 by thakis
[Windows build] Use "DIA SDK" in sysroot

This updates llvm/utils/sysroot.py to include the "DIA SDK" folder in the
sysroot.

It also updates the build to look for the DIA SDK there if a sysroot is set.

This requires moving LLVM_WINSYSROOT to config-ix.cmake.

For the GN build, I chose to pass a qualified path to diaguids in libs instead
of pushing a config with a `/libpath:` flag. The former requires a GN with
https://gn-review.googlesource.com/c/gn/+/12200, the latter requires D109624.
The former is more like the cmake build, arguably a bit simpler, and it's
easier to check for the wrong GN revision and easier to update GN.

Differential Revision: https://reviews.llvm.org/D109708
The file was modifiedllvm/cmake/config-ix.cmake
The file was modifiedllvm/utils/sysroot.py
The file was modifiedllvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/BUILD.gn
The file was modifiedllvm/utils/gn/secondary/llvm/lib/DebugInfo/PDB/enable_dia.gni
The file was modifiedllvm/cmake/modules/HandleLLVMOptions.cmake
The file was modifiedcompiler-rt/cmake/config-ix.cmake
Commit 9bbc0c1ffb47f9cf4c9d8e9a0e8100002fe5aafb by stephen.tozer
[Dexter] Improve performance by evaluating expressions only when needed

Currently, Dexter's model for fetching watch values is to build a list of
expressions to watch before running the debugger, then evaluating all of them at
each breakpoint, then finally looking up the values of these expressions at each
line they were expected on. When using dexter on a large project while watching
many different expressions, this is very slow, as Dexter will make a massive
number of calls made to the debugger's API, the vast majority of which are not
being used for anything. This patch fixes this issue by having Dexter only
evaluate expressions at a breakpoint when it will be used by a Dexter command.

Reviewed By: jmorse

Differential Revision: https://reviews.llvm.org/D107070
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectWatchBase.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectProgramState.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/command/CommandBase.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py
The file was modifiedcross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
Commit 601102d282d5e9a1429fea52ee17303aec8a7c10 by aaron
Cleanup identifier parsing; NFC

Rename methods to clearly signal when they only deal with ASCII,
simplify the parsing of identifier, and use start/continue instead of
head/body for consistency with Unicode terminology.
The file was modifiedclang/unittests/Basic/CharInfoTest.cpp
The file was modifiedclang/lib/Tooling/Transformer/Parsing.cpp
The file was modifiedclang/include/clang/Basic/CharInfo.h
The file was modifiedclang/lib/Frontend/LayoutOverrideSource.cpp
The file was modifiedclang-tools-extra/clangd/SourceCode.cpp
The file was modifiedclang/lib/Lex/ModuleMap.cpp
The file was modifiedclang-tools-extra/clangd/refactor/Rename.cpp
The file was modifiedclang/lib/Lex/DependencyDirectivesSourceMinimizer.cpp
The file was modifiedclang/lib/Sema/SemaType.cpp
The file was modifiedclang-tools-extra/clang-include-fixer/IncludeFixer.cpp
The file was modifiedclang/lib/Sema/SemaAvailability.cpp
The file was modifiedclang-tools-extra/clangd/CodeComplete.cpp
The file was modifiedclang/lib/ARCMigrate/ObjCMT.cpp
The file was modifiedclang/lib/Basic/Module.cpp
The file was modifiedclang/lib/Sema/SemaDeclAttr.cpp
The file was modifiedclang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp
The file was modifiedclang/lib/AST/MicrosoftMangle.cpp
The file was modifiedclang/lib/Frontend/Rewrite/FrontendActions.cpp
The file was modifiedclang/lib/Edit/EditedSource.cpp
The file was modifiedclang/lib/Lex/Lexer.cpp
The file was modifiedclang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
The file was modifiedclang/include/clang/Lex/Lexer.h
The file was modifiedclang/lib/ARCMigrate/TransUnbridgedCasts.cpp
The file was modifiedclang/lib/Sema/SemaExprObjC.cpp
Commit f22c63b41bda01163a88b0bb9887a9324810732f by pavel
[lldb/test] Start pexpect tests with a custom HOME

This addresses the flakyness of (at least) TestMultilineNavigation,
which was failing when the editline history of a concurrently executing
test made leaked in. Using a test-specific home directory ensures the
tests are independent.
The file was modifiedlldb/packages/Python/lldbsuite/test/lldbpexpect.py
Commit 2b4745fe057f9d84e7c73cf5b990c7bdcde8847f by Matthew.Arsenault
AMDGPU: Avoid relying on an undef value in test

This was really becoming a direct call during the DAG, so it wasn't as
true to the test purpose.
The file was modifiedllvm/test/CodeGen/AMDGPU/indirect-call-known-callees.ll
Commit a1ae56d6ad9ae823241b384178910576590c223b by anna
Remove incorrect comment in getSingleUndroppableUse. NFC

We traverse the entire use list to find the undroppable use.
The file was modifiedllvm/include/llvm/IR/Value.h
Commit 5041a485b948e55e54338779f2248c45402b0ae7 by amy.kwan1
[PowerPC] Exploit Prefixed Load/Stores using the refactored Load/Store Implementation

This patch exploits the prefixed load and store instructions utilizing the
refactored load/store implementation introduced in D93370.

Prefixed load and store instructions are emitted whenever we are loading or
storing a value with an offset that fits into a 34-bit signed immediate.
Patterns for the prefixed load and stores are added in this patch, as well as
the implementation that detects when we are loading and storing a value with an
offset that fits in 34-bits.

Differential Revision: https://reviews.llvm.org/D96075
The file was modifiedllvm/test/CodeGen/PowerPC/int128_ldst.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.td
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-float-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/aix-vec_insert_elt.ll
The file was modifiedllvm/test/CodeGen/PowerPC/mma-intrinsics.ll
The file was modifiedllvm/test/CodeGen/PowerPC/mma-acc-memops.ll
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-i8-ldst.ll
The file was addedllvm/test/CodeGen/PowerPC/p10-fi-elim.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.cpp
The file was modifiedllvm/lib/Target/PowerPC/PPCISelLowering.h
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-double-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/vec_insert_elt.ll
The file was modifiedllvm/test/CodeGen/PowerPC/pcrel_ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i64-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i8-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-i16-ldst.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
The file was modifiedllvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i32-ldst.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrPrefix.td
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-i64-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/paired-vector-intrinsics.ll
The file was modifiedllvm/test/CodeGen/PowerPC/f128_ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/vector-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/atomics-i16-ldst.ll
The file was modifiedllvm/test/CodeGen/PowerPC/scalar-i32-ldst.ll
Commit ef8c9135efcb3847fc0e5bbdb55eae18751090df by sbc
[WebAssembly] Allow import and export of TLS symbols between DSOs

We previously had a limitation that TLS variables could not
be exported (and therefore could also not be imported).  This
change removed that limitation.

Differential Revision: https://reviews.llvm.org/D108877
The file was removedlld/test/wasm/tls-import.s
The file was modifiedllvm/test/MC/WebAssembly/tls.s
The file was modifiedlld/test/wasm/shared.s
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
The file was modifiedllvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll
The file was modifiedlld/test/wasm/tls-export.s
The file was modifiedllvm/test/CodeGen/WebAssembly/tls-local-exec.ll
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp
The file was modifiedllvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmTypeCheck.cpp
The file was modifiedlld/test/wasm/shared64.s
The file was modifiedlld/test/wasm/pie.ll
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
The file was modifiedlld/test/wasm/tls-non-shared-memory.s
The file was modifiedllvm/lib/Object/WasmObjectFile.cpp
The file was modifiedllvm/include/llvm/BinaryFormat/Wasm.h
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
The file was modifiedllvm/lib/ObjectYAML/WasmYAML.cpp
The file was modifiedllvm/lib/MC/MCWasmStreamer.cpp
The file was modifiedlld/test/wasm/shared-needed.s
The file was modifiedllvm/include/llvm/MC/MCExpr.h
The file was modifiedlld/wasm/Symbols.h
The file was modifiedllvm/lib/MC/MCExpr.cpp
The file was modifiedlld/wasm/Relocations.cpp
The file was modifiedllvm/tools/obj2yaml/wasm2yaml.cpp
The file was modifiedlld/wasm/Symbols.cpp
The file was modifiedlld/wasm/Writer.cpp
The file was modifiedllvm/include/llvm/ObjectYAML/WasmYAML.h
The file was modifiedlld/wasm/SyntheticSections.h
The file was modifiedlld/wasm/SyntheticSections.cpp
Commit 8401713b3ef1456a603874d96a99b2d5953df49c by davg
[clangd] Ignore ObjC `id` and `instancetype` in FindTarget

Even though they're implemented via typedefs, we typically
want to treat them like keywords.

We could add hover information / xrefs, but it's very unlikely
to provide any value.

Differential Revision: https://reviews.llvm.org/D108556
The file was modifiedclang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
The file was modifiedclang-tools-extra/clangd/FindTarget.cpp
The file was modifiedclang-tools-extra/clangd/unittests/FindTargetTests.cpp
Commit fb4d590a622f4031900516360c07ee6ace01c5e6 by kristof.umann
Fix a unittest file after D108695 when Z3 is enabled
The file was modifiedclang/unittests/StaticAnalyzer/CheckerRegistration.h
The file was modifiedclang/unittests/StaticAnalyzer/FalsePositiveRefutationBRVisitorTest.cpp
Commit 6ee55f9ab57435ae72a070a9eff76f281082208f by sbc
Fix test failure created by ef8c9135efcb

Followup to https://reviews.llvm.org/D108877 to fix test
failure.
The file was modifiedlld/test/wasm/shared-needed.s
The file was modifiedllvm/lib/ObjectYAML/WasmYAML.cpp
The file was modifiedlld/test/wasm/shared.s
The file was modifiedlld/test/wasm/shared64.s
Commit 2fd180bbb9a7bb8604a5aca31f1ca9dc5358a433 by craig.topper
[IR] Reduce max supported integer from 2^24-1 to 2^23.

SelectionDAG will promote illegal types up to a power of 2 before
splitting down to a legal type. This will create an IntegerType
with a bit width that must be <= MAX_INT_BITS. This places an
effective upper limit on any type of 2^23 so that we don't try
create a 2^24 type.

I considered putting a fatal error somewhere in the path from
TargetLowering::getTypeConversion down to IntegerType::get, but
limiting the type in IR seemed better.

This breaks backwards compatibility with IR that is using a really
large type. I suspect such IR is going to be very rare due to the
the compile time costs such a type likely incurs.

Prevents the ICE in PR51829.

Reviewed By: efriedma, aaron.ballman

Differential Revision: https://reviews.llvm.org/D109721
The file was modifiedllvm/test/Assembler/max-inttype.ll
The file was modifiedllvm/docs/LangRef.rst
The file was modifiedllvm/docs/ReleaseNotes.rst
The file was modifiedclang/docs/ReleaseNotes.rst
The file was modifiedclang/test/CodeGenCXX/ext-int.cpp
The file was modifiedllvm/test/Assembler/invalid-inttype.ll
The file was modifiedclang/test/SemaCXX/ext-int.cpp
The file was modifiedclang/test/CodeGen/ext-int.c
The file was modifiedllvm/include/llvm/IR/DerivedTypes.h
Commit d0d9e6f0849b2e76e980e2edf365302f47f4e35f by Saleem Abdulrasool
clang-tidy: introduce readability-containter-data-pointer check

This introduces a new check, readability-containter-data-pointer.  This
check is meant to catch the cases where the user may be trying to
materialize the data pointer by taking the address of the 0-th member of
a container.  With C++11 or newer, the `data` member should be used for
this.  This provides the following benefits:

- `.data()` is easier to read than `&[0]`
- it avoids an unnecessary re-materialization of the pointer
  * this doesn't matter in the case of optimized code, but in the case
    of unoptimized code, this will be visible
- it avoids a potential invalid memory de-reference caused by the
  indexing when the container is empty (in debug mode, clang will
  normally optimize away the re-materialization in optimized builds).

The small potential behavioural change raises the question of where the
check should belong.  A reasoning of defense in depth applies here, and
this does an unchecked conversion, with the assumption that users can
use the static analyzer to catch cases where we can statically identify
an invalid memory de-reference.  For the cases where the static analysis
is unable to prove the size of the container, UBSan can be used to track
the invalid access.

Special thanks to Aaron Ballmann for the discussion on whether this
check would be useful and where to place it.

This also partially resolves PR26817!

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D108893
The file was modifiedclang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp
The file was modifiedclang-tools-extra/clang-tidy/readability/CMakeLists.txt
The file was addedclang-tools-extra/clang-tidy/readability/ContainerDataPointerCheck.cpp
The file was addedclang-tools-extra/docs/clang-tidy/checks/readability-data-pointer.rst
The file was addedclang-tools-extra/clang-tidy/readability/ContainerDataPointerCheck.h
The file was modifiedclang-tools-extra/docs/ReleaseNotes.rst
The file was addedclang-tools-extra/test/clang-tidy/checkers/readability-container-data-pointer.cpp