[all-commits] [llvm/llvm-project] ef67f6: Fix analyzer crash on 'StructuralValue' (#79764)

Billy Laws via All-commits all-commits at lists.llvm.org
Thu Feb 1 01:16:02 PST 2024


  Branch: refs/heads/users/wangpc-pp/spr/main.riscv-support-select-optimization
  Home:   https://github.com/llvm/llvm-project
  Commit: ef67f63fa5f950f4056b5783e92e137342805d74
      https://github.com/llvm/llvm-project/commit/ef67f63fa5f950f4056b5783e92e137342805d74
  Author: Andrey Ali Khan Bolshakov <32954549+bolshakov-a at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/StaticAnalyzer/Core/Environment.cpp
    M clang/test/Analysis/templates.cpp
    M clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp

  Log Message:
  -----------
  Fix analyzer crash on 'StructuralValue' (#79764)

`OpaqueValueExpr` doesn't necessarily contain a source expression.
Particularly, after #78041, it is used to carry the type and the value
kind of a non-type template argument of floating-point type or referring
to a subobject (those are so called `StructuralValue` arguments).

This fixes #79575.


  Commit: 2acf302c1bd562a648cc5bcd0bac04433696f5f4
      https://github.com/llvm/llvm-project/commit/2acf302c1bd562a648cc5bcd0bac04433696f5f4
  Author: Shengchen Kan <shengchen.kan at intel.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86CompressEVEX.cpp

  Log Message:
  -----------
  [X86][NFC] X86CompressEVEX.cpp - Simplify code after 0c623b58e39cba7e67a0049dbcac87fdcc0103e1


  Commit: 683bc94e1637bd9bacc978f5dc3c79cfc8ff94b9
      https://github.com/llvm/llvm-project/commit/683bc94e1637bd9bacc978f5dc3c79cfc8ff94b9
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/docs/ReleaseNotes/19.rst
    M libcxx/include/__config
    M libcxx/include/__format/format_functions.h

  Log Message:
  -----------
  [libc++] Officially remove _VSTD and _LIBCPP_INLINE_VISIBILITY (#79885)

Those were deprecated and basically not used anymore after we renamed
them in batch. This patch removes the macros entirely.


  Commit: fdac7d0b6f74f919d319b31a0680c77f66732586
      https://github.com/llvm/llvm-project/commit/fdac7d0b6f74f919d319b31a0680c77f66732586
  Author: Sergio Afonso <safonsof at amd.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h

  Log Message:
  -----------
  [OpenMPIRBuilder] NFC: Improve description of IsTargetDevice and IsGPU (#79322)

This patch tries to better explain the differences between the
`IsTargetDevice` and `IsGPU` flags of the `OpenMPIRBuilderConfig`.


  Commit: 02a275cca166546e32153997e4c800763ba7fc85
      https://github.com/llvm/llvm-project/commit/02a275cca166546e32153997e4c800763ba7fc85
  Author: Shengchen Kan <shengchen.kan at intel.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86InstrInfo.cpp

  Log Message:
  -----------
  [X86][CodeGen] Add entries for TB_BCAST_SH in getBroadcastOpcode


  Commit: 6251b6bd8d219fe2d99d125095622566721fe6f4
      https://github.com/llvm/llvm-project/commit/6251b6bd8d219fe2d99d125095622566721fe6f4
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/test/CodeGen/AArch64/vec3-loads-ext-trunc-stores.ll

  Log Message:
  -----------
  [AArch64] Add tests with sext of vec3 loads.

Another round of additional tests for
https://github.com/llvm/llvm-project/pull/7863
with different sext/zext and use variants.


  Commit: a0d266d705d6c145e8daa08a08f70e9498ec3d0b
      https://github.com/llvm/llvm-project/commit/a0d266d705d6c145e8daa08a08f70e9498ec3d0b
  Author: Krystian Stasiowski <sdkrystian at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/Sema/SemaDecl.cpp
    M clang/test/CXX/class.access/p4.cpp
    A clang/test/CXX/dcl.dcl/dcl.enum/p1.cpp
    M clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p1.cpp
    M clang/test/CXX/drs/dr16xx.cpp
    M clang/test/CXX/module/module.interface/p2-2.cpp
    M clang/test/SemaCXX/enum-scoped.cpp
    M clang/test/SemaCXX/nested-name-spec.cpp
    M clang/test/SemaTemplate/elaborated-type-specifier.cpp
    M clang/test/SemaTemplate/qualified-id.cpp

  Log Message:
  -----------
  [Clang][Sema] Allow elaborated-type-specifiers that declare member class template explict specializations (#78720)

According to [[dcl.type.elab]
p2](http://eel.is/c++draft/dcl.type.elab#2):
> If an
[elaborated-type-specifier](http://eel.is/c++draft/dcl.type.elab#nt:elaborated-type-specifier)
is the sole constituent of a declaration, the declaration is ill-formed
unless it is an explicit specialization, an explicit instantiation or it
has one of the following forms [...]

Consider the following:
```cpp
template<typename T>
struct A 
{
    template<typename U>
    struct B;
};

template<>
template<typename U>
struct A<int>::B; // #1
```
The _elaborated-type-specifier_ at `#1` declares an explicit
specialization (which is itself a template). We currently (incorrectly)
reject this, and this PR fixes that.

I moved the point at which _elaborated-type-specifiers_ with
_nested-name-specifiers_ are diagnosed from `ParsedFreeStandingDeclSpec`
to `ActOnTag` for two reasons: `ActOnTag` isn't called for explicit
instantiations and partial/explicit specializations, and because it's
where we determine if a member specialization is being declared.

With respect to diagnostics, I am currently issuing the diagnostic
without marking the declaration as invalid or returning early, which
results in more diagnostics that I think is necessary. I would like
feedback regarding what the "correct" behavior should be here.


  Commit: f89d707e5f5e531fb854f70e02d9eaa32aaf19bd
      https://github.com/llvm/llvm-project/commit/f89d707e5f5e531fb854f70e02d9eaa32aaf19bd
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/include/__config
    M libcxx/include/__utility/pair.h
    M libcxx/include/string
    M libcxx/include/tuple
    M libcxx/include/vector

  Log Message:
  -----------
  [libc++] Accept __VA_ARGS__ in conditional _NOEXCEPT_ macro (#79877)

This prevents having to use double parentheses in common cases.


  Commit: 7162fd750ee5f786f3b9b7a7b26b72ee36ce772e
      https://github.com/llvm/llvm-project/commit/7162fd750ee5f786f3b9b7a7b26b72ee36ce772e
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/docs/DesignDocs/ThreadingSupportAPI.rst
    M libcxx/include/CMakeLists.txt
    M libcxx/include/__atomic/atomic_flag.h
    M libcxx/include/__atomic/atomic_sync.h
    M libcxx/include/__condition_variable/condition_variable.h
    M libcxx/include/__mutex/mutex.h
    M libcxx/include/__thread/formatter.h
    M libcxx/include/__thread/id.h
    M libcxx/include/__thread/jthread.h
    A libcxx/include/__thread/support.h
    A libcxx/include/__thread/support/c11.h
    A libcxx/include/__thread/support/external.h
    A libcxx/include/__thread/support/pthread.h
    A libcxx/include/__thread/support/windows.h
    M libcxx/include/__thread/this_thread.h
    M libcxx/include/__thread/thread.h
    M libcxx/include/__thread/timed_backoff_policy.h
    R libcxx/include/__threading_support
    M libcxx/include/libcxx.imp
    M libcxx/include/module.modulemap.in
    M libcxx/include/mutex
    M libcxx/include/semaphore
    M libcxx/include/thread
    M libcxx/src/call_once.cpp
    M libcxx/src/condition_variable_destructor.cpp
    M libcxx/src/mutex_destructor.cpp
    M libcxx/src/support/win32/thread_win32.cpp
    M libcxx/utils/generate_iwyu_mapping.py
    M libcxx/utils/libcxx/test/modules.py
    M libcxxabi/src/cxa_exception_storage.cpp
    M libcxxabi/src/cxa_guard_impl.h
    M libcxxabi/src/cxa_thread_atexit.cpp
    M libcxxabi/src/fallback_malloc.cpp
    M libcxxabi/test/test_fallback_malloc.pass.cpp

  Log Message:
  -----------
  [libc++] Split the monolithic __threading_support header (#79654)

The <__threading_support> header is a huge beast and it's really
difficult to navigate. I find myself struggling to find what I want
every time I have to open it, and I've been considering splitting it up
for years for that reason.

This patch aims not to contain any functional change. The various
implementations of the threading base are simply moved to separate
headers and then the individual headers are simplified in mechanical
ways. For example, we used to have redundant declarations of all the
functions at the top of `__threading_support`, and those are removed
since they are not needed anymore. The various #ifdefs are also
simplified and removed when they become unnecessary.

Finally, this patch adds documentation for the API we expect from any
threading implementation.


  Commit: e37a6008831b38477516362892dd3c0d97087eff
      https://github.com/llvm/llvm-project/commit/e37a6008831b38477516362892dd3c0d97087eff
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/include/__tuple/sfinae_helpers.h
    M libcxx/test/libcxx/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp

  Log Message:
  -----------
  [libc++][NFC] Remove dead code implementing some tuple SFINAE checks (#79871)

Some of the checks in sfinae_helpers.h were not used anymore since we
refactored the std::tuple implementation and were now dead code. This
patch removes the code.


  Commit: 4017f04e310454ccced4c404a23f7698eec735ca
      https://github.com/llvm/llvm-project/commit/4017f04e310454ccced4c404a23f7698eec735ca
  Author: Tacet <4922191+AdvenamTacet at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/include/string

  Log Message:
  -----------
  Remove unnecessary _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS (#79574)

This macro is unnecessary with `basic_string& operator=(value_type
__c)`.


  Commit: c3668779c13596e223c26fbd49670d18cd638c40
      https://github.com/llvm/llvm-project/commit/c3668779c13596e223c26fbd49670d18cd638c40
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/docs/ReleaseNotes/19.rst
    M libcxx/include/__string/char_traits.h
    R libcxx/test/libcxx/strings/char.traits/char.traits.specializations/arbitrary_char_type.deprecated.verify.cpp
    R libcxx/test/libcxx/strings/char.traits/char.traits.specializations/arbitrary_char_type.pass.cpp

  Log Message:
  -----------
  [libc++] Remove deprecated char_traits base template (#72694)

This patch has quite a bit of history. First, it must be noted that the
Standard only specifies specializations of char_traits for char,
char8_t, char16_t, char32_t and wchar_t. However, before this patch, we
would provide a base template that accepted anything, and as a result
code like `std::basic_string<long long>` would compile but nobody knows
what it really does. It basically compiles by accident.

We marked the base template as deprecated in LLVM 15 or 16 and were
planning on removing it in LLVM 17, which we did in e30a148b098d.
However, it turned out that the deprecation warning had never been
visible in user code since Clang did not surface that warning from
system headers. As a result, this caught people by surprise and we
decided to reintroduce the base template in LLVM 17 in cce062d226ba.

Since then, #70353 changed Clang so that such deprecation warnings would
be visible from user code. Hence, this patch closes the loop and removes
the deprecated specializations.


  Commit: 837bff11cb7d31f40805c73d4f539960a77eda33
      https://github.com/llvm/llvm-project/commit/837bff11cb7d31f40805c73d4f539960a77eda33
  Author: Sergio Afonso <safonsof at amd.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/include/flang/Lower/Bridge.h
    M flang/include/flang/Optimizer/CodeGen/CGPasses.td
    M flang/include/flang/Optimizer/CodeGen/Target.h
    M flang/include/flang/Optimizer/Dialect/Support/FIRContext.h
    M flang/lib/Frontend/FrontendActions.cpp
    M flang/lib/Lower/Bridge.cpp
    M flang/lib/Optimizer/CodeGen/CodeGen.cpp
    M flang/lib/Optimizer/CodeGen/Target.cpp
    M flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
    M flang/lib/Optimizer/CodeGen/TypeConverter.cpp
    M flang/lib/Optimizer/Dialect/Support/FIRContext.cpp
    M flang/test/Driver/save-mlir-temps.f90
    A flang/test/Fir/target-rewrite-target-cpu.fir
    A flang/test/Fir/target-rewrite-target-features.fir
    A flang/test/Lower/target-features-amdgcn.f90
    A flang/test/Lower/target-features-x86_64.f90
    M flang/tools/bbc/bbc.cpp
    M flang/tools/tco/tco.cpp
    M flang/unittests/Optimizer/FIRContextTest.cpp

  Log Message:
  -----------
  [Flang][Lower] Attach target_cpu and target_features attributes to MLIR functions (#78289)

This patch forwards the target CPU and features information from the
Flang frontend to MLIR func.func operation attributes, which are later
used to populate the target_cpu and target_features llvm.func
attributes.

This is achieved in two stages:

1. Introduce the `fir.target_cpu` and `fir.target_features` module
attributes with information from the target machine immediately after
the initial creation of the MLIR module in the lowering bridge.

2. Update the target rewrite flang pass to get this information from the
module and pass it along to all func.func MLIR operations, respectively
as attributes named `target_cpu` and `target_features`. These attributes
will be automatically picked up during Func to LLVM dialect lowering and
used to initialize the corresponding llvm.func named attributes.

The target rewrite and FIR to LLVM lowering passes are updated with the
ability to override these module attributes, and the `CodeGenSpecifics`
optimizer class is augmented to make this information available to
target-specific MLIR transformations.

This completes a full flow by which target CPU and features make it all
the way from compiler options to LLVM IR function attributes.


  Commit: 7565ae6eb99b6d3c5d83d04404a2df1b3785dbfe
      https://github.com/llvm/llvm-project/commit/7565ae6eb99b6d3c5d83d04404a2df1b3785dbfe
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M lldb/test/API/functionalities/breakpoint/hardware_breakpoints/require_hw_breakpoints/TestRequireHWBreakpoints.py

  Log Message:
  -----------
  [lldb][test][NFC] Refactor xfails in TestRequireHWBreakpoints.py

This file used a strange, multi-level setup where we skipped on
a function we used for xfailing. Let's not do that, just skip
the one test we care about.

Also added a comment to explain how this file works. The tests
*want* calls to fail when we ask for only hardware breaks
but have none to use.

If you don't know that, it all seems backwards.


  Commit: ace383df52c0d2cf5f0afa4508f831a027fccbb4
      https://github.com/llvm/llvm-project/commit/ace383df52c0d2cf5f0afa4508f831a027fccbb4
  Author: Guillaume Chatelet <gchatelet at google.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/src/__support/FPUtil/DivisionAndRemainderOperations.h
    M libc/src/__support/FPUtil/FPBits.h
    M libc/src/__support/FPUtil/generic/FMod.h
    M libc/src/__support/FPUtil/generic/sqrt.h
    M libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h
    M libc/src/__support/str_to_float.h
    M libc/src/math/generic/acosf.cpp
    M libc/src/math/generic/acoshf.cpp
    M libc/src/math/generic/asinf.cpp
    M libc/src/math/generic/atanhf.cpp
    M libc/src/math/generic/cosf.cpp
    M libc/src/math/generic/log.cpp
    M libc/src/math/generic/log10.cpp
    M libc/src/math/generic/log10f.cpp
    M libc/src/math/generic/log1p.cpp
    M libc/src/math/generic/log1pf.cpp
    M libc/src/math/generic/log2.cpp
    M libc/src/math/generic/log2f.cpp
    M libc/src/math/generic/logf.cpp
    M libc/src/math/generic/powf.cpp
    M libc/src/math/generic/sincosf.cpp
    M libc/src/math/generic/sinf.cpp
    M libc/src/math/generic/tanf.cpp
    M libc/test/UnitTest/FPMatcher.h
    M libc/test/src/__support/FPUtil/fpbits_test.cpp
    M libc/test/src/math/FDimTest.h
    M libc/test/src/math/FmaTest.h
    M libc/test/src/math/HypotTest.h
    M libc/test/src/math/ILogbTest.h
    M libc/test/src/math/LdExpTest.h
    M libc/test/src/math/NextAfterTest.h
    M libc/test/src/math/RIntTest.h
    M libc/test/src/math/RemQuoTest.h
    M libc/test/src/math/RoundToIntegerTest.h
    M libc/test/src/math/smoke/FDimTest.h
    M libc/test/src/math/smoke/FmaTest.h
    M libc/test/src/math/smoke/HypotTest.h
    M libc/test/src/math/smoke/ILogbTest.h
    M libc/test/src/math/smoke/LdExpTest.h
    M libc/test/src/math/smoke/NextAfterTest.h
    M libc/test/src/math/smoke/NextTowardTest.h
    M libc/test/src/math/smoke/RIntTest.h
    M libc/test/src/math/smoke/RemQuoTest.h
    M libc/test/src/math/smoke/RoundToIntegerTest.h
    M libc/test/src/stdio/sprintf_test.cpp
    M libc/test/src/stdio/sscanf_test.cpp

  Log Message:
  -----------
  [libc][NFC] Rename `FPBits` nan functions (#79998)

- [libc][NFC] Rename FPBits nan functions
- rename build_signaling_nan in signaling_nan
- rename build_quiet_nan to quiet_nan


  Commit: 8774d2936dd1cf0ee8d74ff600359d465179d009
      https://github.com/llvm/llvm-project/commit/8774d2936dd1cf0ee8d74ff600359d465179d009
  Author: ita-sc <109672931+ita-sc at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp

  Log Message:
  -----------
  [lldb][RISCV] Fix connection error to gdb server for RISC-V (#79990)

This patch fix connection for LLDB for remote gdb server running on
RISC-V.

You can test connection with OpenOCD or qemu-riscv64.


  Commit: 748c29590829cdc0b9572e51d212b3a1d313c318
      https://github.com/llvm/llvm-project/commit/748c29590829cdc0b9572e51d212b3a1d313c318
  Author: Alex Bradbury <asb at igalia.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
    M mlir/lib/Target/LLVMIR/ModuleImport.cpp
    M mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
    M mlir/test/Dialect/LLVMIR/func.mlir
    M mlir/test/Target/LLVMIR/Import/function-attributes.ll
    A mlir/test/Target/LLVMIR/fp-math-function-attributes.mlir

  Log Message:
  -----------
  [MLIR][LLVM] Add fast-math related function attribute support (#79812)

Adds unsafe-fp-math, no-infs-fp-math, no-nans-fp-math,
approx-func-fp-math, and no-signed-zeros-fp-math function attributes.

This allows code generators using the LLVMIR dialect to match the
codegen of Clang.


  Commit: d1e162e5d94e8c0b1c46bc0c9c45f96eacdd75c8
      https://github.com/llvm/llvm-project/commit/d1e162e5d94e8c0b1c46bc0c9c45f96eacdd75c8
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/vec3-loads-ext-trunc-stores.ll

  Log Message:
  -----------
  [AArch64] Add custom lowering for load <3 x i8>. (#78632)

Add custom combine to lower load <3 x i8> as the more efficient sequence
below:
   ldrb wX, [x0, #2]
   ldrh wY, [x0]
   orr wX, wY, wX, lsl #16
   fmov s0, wX

At the moment, there are almost no cases in which such vector operations
will be generated automatically. The motivating case is non-power-of-2
SLP vectorization: https://github.com/llvm/llvm-project/pull/77790


  Commit: 77e5136ce4221a9f02e905e6079f01d497cfe79e
      https://github.com/llvm/llvm-project/commit/77e5136ce4221a9f02e905e6079f01d497cfe79e
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/RegisterClassInfo.h
    M llvm/lib/CodeGen/RegisterClassInfo.cpp

  Log Message:
  -----------
  [CodeGen] Use RegUnits in RegisterClassInfo::getLastCalleeSavedAlias (#79996)

Change the implementation of getLastCalleeSavedAlias to use RegUnits
instead of register aliases. This is much faster on targets like AMDGPU
which define a very large number of overlapping register tuples.

No functional change intended. If PhysReg overlaps multiple CSRs then
getLastCalleeSavedAlias(PhysReg) could conceivably return a different
arbitrary one, but currently it is only used for some debug printing
anyway.

Differential Revision: https://reviews.llvm.org/D146734


  Commit: 6aed6cc40ec0006bb43f1ec4b2ec87702392ad6e
      https://github.com/llvm/llvm-project/commit/6aed6cc40ec0006bb43f1ec4b2ec87702392ad6e
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M openmp/libomptarget/DeviceRTL/CMakeLists.txt
    M openmp/libomptarget/DeviceRTL/src/Mapping.cpp
    M openmp/libomptarget/DeviceRTL/src/Misc.cpp
    M openmp/libomptarget/DeviceRTL/src/Synchronization.cpp
    M openmp/libomptarget/DeviceRTL/src/Utils.cpp

  Log Message:
  -----------
  [Libomptarget] Remove remaining inline assembly from the device RTL (#79922)

Summary:
Recent patches have added some missing intrinsic functions NVPTX. This
patch gets rid of all the remaining uses of inline assembly. The one
change that wasn't directly replaced with a built-in was the `pack` and
`unpack` implementations. However, using the generic C implementation is
equivalent to the output SASS when run through PTXAS.


  Commit: 976374d9828582f1ca4a4bb4da96fb67c20949f8
      https://github.com/llvm/llvm-project/commit/976374d9828582f1ca4a4bb4da96fb67c20949f8
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

  Log Message:
  -----------
  [SLP][NFC]Use MutableArrayRef instead of SmallVectorImpl&, NFC.


  Commit: 0f9ab7b861268618988c5271e2227b9ab4c1827b
      https://github.com/llvm/llvm-project/commit/0f9ab7b861268618988c5271e2227b9ab4c1827b
  Author: David Benjamin <davidben at google.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/include/deque
    M libcxx/test/libcxx/containers/sequences/deque/asan_caterpillar.pass.cpp
    A libcxx/test/libcxx/containers/sequences/deque/assert.pass.cpp

  Log Message:
  -----------
  [libc++][hardening] Add hardening assertions to std::deque (#79397)

This aligns std::deque with std::vector w.r.t. hardening checks. There's
probably more that can be done with iterators, but start with this.

This caught a bug with one of libc++'s tests. One of the erase calls in
asan_caterpillar.pass.cpp was a no-op because the iterators were in the
other order. (deque::erase happened to cleanly do nothing when the
distance is negative.)

Fixes #63809


  Commit: 24a903c4057e06579e475277377713dc49fef232
      https://github.com/llvm/llvm-project/commit/24a903c4057e06579e475277377713dc49fef232
  Author: Guillaume Chatelet <gchatelet at google.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/src/__support/FPUtil/FPBits.h
    M libc/src/math/generic/explogxf.h
    M libc/src/math/generic/hypotf.cpp
    M libc/src/math/generic/log1pf.cpp
    M libc/src/math/generic/range_reduction_fma.h
    M libc/test/src/math/atanhf_test.cpp
    M libc/test/src/math/smoke/atanhf_test.cpp
    M libc/test/src/math/smoke/nan_test.cpp
    M libc/test/src/math/smoke/nanf_test.cpp

  Log Message:
  -----------
  [libc][NFC] Move functions from `FPBits` to `FPRep`, make `bits` member private (#79974)


  Commit: 21d75ee2164015e0023b6ec0067eac731c56448b
      https://github.com/llvm/llvm-project/commit/21d75ee2164015e0023b6ec0067eac731c56448b
  Author: Hristo Hristov <hghristov.rmm at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/docs/Contributing.rst

  Log Message:
  -----------
  [libc++][docs] Add `_LIBCPP_PUSH_MACROS` and `_LIBCPP_POP_MACROS` (#79963)

I got tripped twice after: 7b4622514d232ce5f7110dd8b20d90e81127c467
Let's at least mention these in the `Contributing.rst` doc.


  Commit: b52fe2df9178022f146fe1776b9a9fd7f4b29bb4
      https://github.com/llvm/llvm-project/commit/b52fe2df9178022f146fe1776b9a9fd7f4b29bb4
  Author: erichkeane <ekeane at nvidia.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Basic/OpenACCKinds.h
    M clang/include/clang/Parse/Parser.h
    M clang/lib/Parse/ParseOpenACC.cpp
    M clang/test/ParserOpenACC/parse-clauses.c

  Log Message:
  -----------
  [OpenACC] Implement 'gang' clause parsing.

The 'gang' clause takes a 'gang-arg-list', which is one of three 'tag'
values, followed by either an 'int-expr' or a 'size-expr', both of which
we already have parsing functions for.

The optional tag values are only slightly complicated, as one is a
keyword (static), so mild modifications needed to be made for that.


  Commit: a9ffdc171aea346754fd63e9b5986853f2d819e7
      https://github.com/llvm/llvm-project/commit/a9ffdc171aea346754fd63e9b5986853f2d819e7
  Author: Billy Laws <blaws05 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M lld/Common/DriverDispatcher.cpp
    M lld/MinGW/Driver.cpp
    M lld/test/MinGW/driver.test

  Log Message:
  -----------
  [lld] [MinGW] Support targeting ARM64EC (#78911)

'arm64ecpe' was chosen arbitrarily as gcc MinGW doesn't provide EC
support.


  Commit: c0f29e83dbcc6789e74918ac6d8d46b8833f45aa
      https://github.com/llvm/llvm-project/commit/c0f29e83dbcc6789e74918ac6d8d46b8833f45aa
  Author: Boian Petkantchin <boian.petkantchin at amd.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/docs/Dialects/Mesh.md
    M mlir/include/mlir/Dialect/Mesh/IR/MeshOps.td

  Log Message:
  -----------
  [mlir][mesh] Make most collectives pure (#79643)

There are assumptions of matching/consistent paths of execution under SPMD that allow to have pure collective communication operations.


  Commit: 4d3b502704809c9605b9568c6feb2a2f0ca51907
      https://github.com/llvm/llvm-project/commit/4d3b502704809c9605b9568c6feb2a2f0ca51907
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/deduct.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.verify.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.verify.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_const_lvalue_pair.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_piecewise.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_rvalue.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_pair_values.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct_type.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/is_always_equal.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/scoped.adaptor.operators/copy_assign.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/scoped.adaptor.operators/eq.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/scoped.adaptor.operators/move_assign.pass.cpp
    M libcxx/test/std/utilities/allocator.adaptor/types.pass.cpp

  Log Message:
  -----------
  [libc++][NFC] Format the scoped_allocator_adaptor tests


  Commit: a3e35a4ea6fa8f1d765674c57ad280d1cbeceb4b
      https://github.com/llvm/llvm-project/commit/a3e35a4ea6fa8f1d765674c57ad280d1cbeceb4b
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    A libcxx/test/std/utilities/allocator.adaptor/types.compile.pass.cpp
    R libcxx/test/std/utilities/allocator.adaptor/types.pass.cpp

  Log Message:
  -----------
  [libc++] Move scoped allocator adaptor test to .compile.pass.cpp


  Commit: 0d965080b48c5661d7cc5d043be19a6a72165001
      https://github.com/llvm/llvm-project/commit/0d965080b48c5661d7cc5d043be19a6a72165001
  Author: Nico Weber <thakis at chromium.org>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/utils/gn/secondary/libcxx/include/BUILD.gn

  Log Message:
  -----------
  [gn] port 7162fd750ee5


  Commit: 3a085e98ac1277834d99f4f4ce0d5c95fccb9092
      https://github.com/llvm/llvm-project/commit/3a085e98ac1277834d99f4f4ce0d5c95fccb9092
  Author: Nico Weber <thakis at chromium.org>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/utils/gn/secondary/libcxx/include/BUILD.gn

  Log Message:
  -----------
  [gn] use write_cmake_config() for __assertion_handler


  Commit: 0129ff17a9885d76d3700fee56500848c28e3fc1
      https://github.com/llvm/llvm-project/commit/0129ff17a9885d76d3700fee56500848c28e3fc1
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/test/include/CMakeLists.txt

  Log Message:
  -----------
  [libc] Fix running 'stdbit.h' tests if file is never generated

Summary:
This test was added to test the generated header. Unfortunately this
doesn't work if the header is never generated. Add a check to make sure
the user has included it in the list of headers.


  Commit: 00582636009d51c5781b9cae8fde858ab3758306
      https://github.com/llvm/llvm-project/commit/00582636009d51c5781b9cae8fde858ab3758306
  Author: Hirofumi Nakamura <k.nakamura.hirofumi at gmail.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M clang/lib/Format/FormatToken.h
    M clang/lib/Format/FormatTokenLexer.cpp
    M clang/unittests/Format/TokenAnnotatorTest.cpp

  Log Message:
  -----------
  [clang-format] Support of TableGen tokens with unary operator like form, bang operators and numeric literals. (#78996)

Adds the support for tokens that have forms like unary operators.
- bang operators:  `!name`
- cond operator: `!cond`
- numeric literals: `+1`, `-1`
cond operator are one of bang operators but is distinguished because it has very specific syntax.


  Commit: fc7c79b60ca0846f1cc916b6b04eedd1fc21537e
      https://github.com/llvm/llvm-project/commit/fc7c79b60ca0846f1cc916b6b04eedd1fc21537e
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp

  Log Message:
  -----------
  [X86] hasBZHI - simplify to a basic check as there's no need for a switch statement. NFCI.


  Commit: fa10121415adfea57954eddcec92a13c7ebab0ac
      https://github.com/llvm/llvm-project/commit/fa10121415adfea57954eddcec92a13c7ebab0ac
  Author: Ryan Holt <ryanholt at mathworks.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    A mlir/include/mlir/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.h
    M mlir/include/mlir/InitAllDialects.h
    M mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
    M mlir/lib/Dialect/Bufferization/Transforms/OneShotModuleBufferize.cpp
    A mlir/lib/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.cpp
    M mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt
    A mlir/test/Dialect/MLProgram/one-shot-bufferize.mlir

  Log Message:
  -----------
  [mlir][MLProgram] Add MLProgram to MemRef bufferization pass (#75103)

There is currently no lowering out of `ml_program` in the LLVM
repository. This change adds a lowering to `memref` so that it can be
lowered all the way to LLVM. This lowering was taken from the [reference
backend in
torch-mlir](https://github.com/llvm/torch-mlir/commit/f41695360019bde71d52ca7548944d5488779e12
).

I had tried implementing the `BufferizableOpInterface` for `ml_program`
instead of adding a new pass but that did not work because
`OneShotBufferize` does not visit module-level ops like
`ml_program.global`.


  Commit: fdf73e949565686804fbd2ab1b3a3bf440a250ca
      https://github.com/llvm/llvm-project/commit/fdf73e949565686804fbd2ab1b3a3bf440a250ca
  Author: Benjamin Maxwell <benjamin.maxwell at arm.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp
    M mlir/test/Dialect/MemRef/canonicalize.mlir

  Log Message:
  -----------
  [mlir][memref] Remove incorrect `memref.transpose` fold (#79809)

This folded casts into `memref.transpose` without updating the result
type of the transpose op, which resulted in IR that failed to verify for
statically sized memrefs.

i.e.

```mlir
%cast = memref.cast %0 : memref<?x4xf32> to memref<?x?xf32>
%transpose = memref.transpose %cast : memref<?x?xf32> to memref<?x?xf32>
```

would fold to:

```mlir
// Fails verification:
%transpose = memref.transpose %cast : memref<?x4xf32> to memref<?x?xf32>
```


  Commit: 8a5bdd899f3cb57024d92b96c16e805ca9924ac7
      https://github.com/llvm/llvm-project/commit/8a5bdd899f3cb57024d92b96c16e805ca9924ac7
  Author: Stefan Gränitz <stefan.graenitz at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/tools/llvm-jitlink/llvm-jitlink.cpp

  Log Message:
  -----------
  [llvm-jitlink] Fix detectStubKind() for big endian systems (#79970)

This function is used in `jitlink-check` lines in LIT tests. In #78371 I
missed to swap initial instruction bytes for systems that store the
constants as big-endian.


  Commit: b23e518ce0df5b0835aba245cda50379bd896374
      https://github.com/llvm/llvm-project/commit/b23e518ce0df5b0835aba245cda50379bd896374
  Author: Thomas Preud'homme <thomas.preudhomme at arm.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
    M mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir

  Log Message:
  -----------
  Fix TOSA FP16->INT16 CAST lowering (#79299)

Currently cast from FP to int is implemented by clamping on the min and
max
integer values in the floating-point domain and then converting to
integer. However, the max int values are often non representable in the
floating-point input type due to lack of mantissa bits.

This patch instead use a select acting on a compare against max int + 1
which is representable in floating-point. It also has a special lowering
for cases where the integer range is wider than the floating-point range
to clamp the infinite values.


  Commit: 2960656eb909b5361ce2c3f641ee341769076ab7
      https://github.com/llvm/llvm-project/commit/2960656eb909b5361ce2c3f641ee341769076ab7
  Author: Shengchen Kan <shengchen.kan at intel.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86InstrInfo.cpp
    M llvm/lib/Target/X86/X86InstrInfo.h

  Log Message:
  -----------
  [X86][NFC] Extract code for commute in foldMemoryOperandImpl into functions

To share code for folding broadcast in #79761


  Commit: c5edef6279ecc1469029184637343854243cc5e6
      https://github.com/llvm/llvm-project/commit/c5edef6279ecc1469029184637343854243cc5e6
  Author: Matthias Springer <springerm at google.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt
    M mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp

  Log Message:
  -----------
  [mlir] Fix build after #75103

After #75103, `MLPrgramTransforms` depends on `BufferizationDialect`.
Also fix an unrelated compile error in `GreedyPatternRewriteDriver.cpp`.
(This was not failing on CI. I may be running an old compiler locally.)


  Commit: 223025a6142d14b772e9dc73e5faf507a08098da
      https://github.com/llvm/llvm-project/commit/223025a6142d14b772e9dc73e5faf507a08098da
  Author: Nick Desaulniers <nickdesaulniers at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/docs/index.rst
    A libc/docs/stdbit.rst

  Log Message:
  -----------
  [libc][docs] add page for stdbit.h (#79908)

To build libc docs:
- Configure with `-DLLVM_ENABLE_SPHINX=ON -DLIBC_INCLUDE_DOCS=ON`
- Build with `ninja docs-libc-html`


  Commit: cdb320b407fc375f91e4b8be6f0ce8bf6bc77ba1
      https://github.com/llvm/llvm-project/commit/cdb320b407fc375f91e4b8be6f0ce8bf6bc77ba1
  Author: Daniel Chen <cdchen at ca.ibm.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/lib/Lower/CallInterface.cpp
    M flang/lib/Lower/ConvertCall.cpp
    M flang/lib/Lower/ConvertExprToHLFIR.cpp
    M flang/lib/Optimizer/Builder/IntrinsicCall.cpp
    M flang/test/Lower/HLFIR/procedure-pointer.f90
    M flang/test/Lower/Intrinsics/associated-proc-pointers.f90

  Log Message:
  -----------
  [Flang]: Lowering reference to functions that return a procedure pointer (#78194)

This PR adds lowering the reference to a function that returns a
procedure pointer. It also fixed intrinsic ASSOCIATED to take such
argument.

---------

Co-authored-by: jeanPerier <jperier at nvidia.com>


  Commit: fe0d16ff60fa2ef7fdbda3574493534979cce742
      https://github.com/llvm/llvm-project/commit/fe0d16ff60fa2ef7fdbda3574493534979cce742
  Author: Joel Wee <joelwee at google.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.cpp
    M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

  Log Message:
  -----------
  [mlir] Fix after #75103


  Commit: b9d623105d51f5fc2d120c862b4e2bbff310f728
      https://github.com/llvm/llvm-project/commit/b9d623105d51f5fc2d120c862b4e2bbff310f728
  Author: Vyacheslav Levytskyy <89994100+VyacheslavLevytskyy at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp
    A llvm/test/CodeGen/SPIRV/unnamed-global.ll

  Log Message:
  -----------
  generate a name of an unnamed global variable for Instruction Selection (#78293)

The goal of this PR is to fix the issue of global unnamed variables
causing SPIR-V Backend code generation to crash:
https://github.com/llvm/llvm-project/issues/78278

The reason for the crash is that GlobalValue's getGlobalIdentifier()
would fail for unnamed global variable when trying to access the first
character of the name (see lib/IR/Globals.cpp:150). This leads to assert
in Debug and undefined behaviour in Release builds.

The proposed fix generates a name of an unnamed global variable as
__unnamed_<unsigned number>, in a style of similar existing LLVM
implementation (see lib/IR/Mangler.cpp:131). A new class member variable
is added into `SPIRVInstructionSelector` class to keep track of the
number we give to anonymous global values to generate the same name
every time when this is needed.

The patch adds a new LIT test with the smallest implementation of
reproducer ll code.


  Commit: 39483797b8981528eafaf6dad557ccfb2312e1ef
      https://github.com/llvm/llvm-project/commit/39483797b8981528eafaf6dad557ccfb2312e1ef
  Author: Vyacheslav Levytskyy <89994100+VyacheslavLevytskyy at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
    A llvm/test/CodeGen/SPIRV/token/token-type-preallocated-setup-arg.ll
    A llvm/test/CodeGen/SPIRV/token/token-type-requires-extension.ll

  Log Message:
  -----------
  prevent undefined behaviour of SPIR-V Backend non-asserts builds when dealing with token type (#78437)

The goal of this PR is to fix the issue when use of token type in LLVM
intrinsic causes undefined behavior of SPIR-V Backend code generator
when assertions are disabled:
https://github.com/llvm/llvm-project/issues/78434

Among possible fix options, discussed in the
https://github.com/llvm/llvm-project/issues/78434 issue description, the
option to generate a meaningful error before execution arrives at the
`llvm_unreachable` call looks like a better solution for now, because
SPIR-V doesn't support token type anyway without additional extensions.

The PR is to generate a user-friendly error message and exit without
generating a stack dump when such a usage of token type was detected
that would lead to undefined behavior of SPIR-V Backend code generator.


  Commit: 9e02e8f1a76693f001c7f52ffddd92c492a2254e
      https://github.com/llvm/llvm-project/commit/9e02e8f1a76693f001c7f52ffddd92c492a2254e
  Author: Vyacheslav Levytskyy <89994100+VyacheslavLevytskyy at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
    M llvm/test/CodeGen/SPIRV/opencl/device_execution/execute_block.ll
    A llvm/test/CodeGen/SPIRV/pointers/struct-opaque-pointers.ll

  Log Message:
  -----------
  fix producing multiple identical opaque pointer types (#79060)

This PR fixes https://github.com/llvm/llvm-project/issues/79057 and
improves code generation for opaque pointers by replacing the culprit
SPIRVGlobalRegistry::getOpTypePointer() call with a more appropriate
SPIRVGlobalRegistry::getOrCreateSPIRVPointerType() call. The latter
function works together with the `DuplicatesTracker`
(`SPIRVGeneralDuplicatesTracker DT;` from `class SPIRVGlobalRegistry`)
to trace existence of previous definitions of opaque pointers. This
allows to produce just one `OpTypePointer` command for all identical
opaque pointers definitions and to return the very same type record for
subsequent `SPIRVGlobalRegistry::createSPIRVType()` invocations.

This PR alone improves code generation by producing a single needed
definition per all opaque pointers to i8 of the same address space
instead of multiple identical definitions produced before the patch.
>From the root cause analysis of
https://github.com/llvm/llvm-project/issues/79057 we see also that this
PR resolves the problem of inconsistency between keeping multiple
instruction for identical opaque pointer types and just a single record
for all such instructions in the `DuplicatesTracker`, and so it also
resolves the issue with crashes on creation of a struct with opaque
pointer fields due to the fact that now such struct fields refer to the
same operand `<id>` having a required record in the data structure used
for dependencies analysis (see
https://github.com/llvm/llvm-project/issues/79057).


  Commit: 036a20cc5104153f47762211d89544ab38d3ab5a
      https://github.com/llvm/llvm-project/commit/036a20cc5104153f47762211d89544ab38d3ab5a
  Author: Wanyi <kusmour at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/test/tools/llvm-gsymutil/X86/elf-empty-dir.yaml

  Log Message:
  -----------
  [llvm-gsymutil] Remove '--num-threads' in test (#79934)

Number of threads will automatically be set to a good value


  Commit: d17b005e46e240b2c95801a14e2c6fc5baa5b3f7
      https://github.com/llvm/llvm-project/commit/d17b005e46e240b2c95801a14e2c6fc5baa5b3f7
  Author: fabrizio-indirli <fabrizio.indirli at arm.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Dialect/SCF/Transforms/ParallelLoopFusion.cpp
    M mlir/test/Dialect/SCF/parallel-loop-fusion.mlir

  Log Message:
  -----------
  [mlir][scf] Relax requirements for loops fusion (#79187)

Enable the fusion of parallel loops also when the 1st loop contains
multiple write accesses to the same buffer, if the accesses are always
on the same indices.
Fix LIT test cases whose loops were not being fused.

Signed-off-by: Fabrizio Indirli <Fabrizio.Indirli at arm.com>


  Commit: b40d5b1b08564d23d5e0769892ebbc32447b2987
      https://github.com/llvm/llvm-project/commit/b40d5b1b08564d23d5e0769892ebbc32447b2987
  Author: Zixu Wang <9819235+zixu-w at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst

  Log Message:
  -----------
  [Docs] Add release note about Clang-defined target OS macros (#79879)


  Commit: 8369f619f589f756533435480c4a65bdfbaf1451
      https://github.com/llvm/llvm-project/commit/8369f619f589f756533435480c4a65bdfbaf1451
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/IR/Operator.h

  Log Message:
  -----------
  [IR] Add more efficient getOperand methods to some of the Operator subclasses. (#79943)

ConstantExpr does not use HungOffUses. If we know that the Instruction
the Operator subclass can represent also does not use HungOffUses, we
can be more efficient than falling back to User::getOperand.


  Commit: 80ee6083ae932841435638d455b8a6094530c2e2
      https://github.com/llvm/llvm-project/commit/80ee6083ae932841435638d455b8a6094530c2e2
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/Support/RISCVAttributes.h
    M llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp
    M llvm/unittests/Support/RISCVAttributeParserTest.cpp

  Log Message:
  -----------
  [RISCV] Remove StackAlign attribute enum. NFC (#79946)

The alignment is directly encoded in the attribute. There doesn't seem
to be a good reason to give the possible alignments a name.


  Commit: d8e1b451e21b62905a76715a78ebc26df25f4e41
      https://github.com/llvm/llvm-project/commit/d8e1b451e21b62905a76715a78ebc26df25f4e41
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-non-zero.ll

  Log Message:
  -----------
  [ValueTracking] Add experimental_get_vector_length to isKnownNonZero. (#79950)

If the input is non-zero, this intrinsic should also return a non-zero
value.


  Commit: 69cb99f9cb2e8757ad2c09b87fc96d5bff73c490
      https://github.com/llvm/llvm-project/commit/69cb99f9cb2e8757ad2c09b87fc96d5bff73c490
  Author: Felipe de Azevedo Piovezan <fpiovezan at apple.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp

  Log Message:
  -----------
  [DebugNames] Use hashes to quickly filter false positives (#79755)

The current implementation of DebugNames is _only_ using hashes to
compute the bucket number. Once inside the bucket, it reverts back to
string comparisons, even though not all hashes inside a bucket are
identical.

This commit changes the behavior so that we check the hash before
comparing strings. Such check is so important that it speeds up a simple
benchmark by 20%. In other words, the following expression evaluation
time goes from 1100ms to 850ms.

```
bin/lldb \
		--batch \
		-o "b CodeGenFunction::GenerateCode" \
		-o run \
		-o "expr Fn" \
		-- \
		clang++ -c -g test.cpp -o /dev/null &> output
```

(Note, these numbers are considering the usage of IDX_parent)


  Commit: 9f3854a01f878831c229db0eb5078fa9d56e60ff
      https://github.com/llvm/llvm-project/commit/9f3854a01f878831c229db0eb5078fa9d56e60ff
  Author: michaelrj-google <71531609+michaelrj-google at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/config/linux/aarch64/entrypoints.txt
    M libc/config/linux/aarch64/headers.txt
    M libc/config/linux/api.td
    M libc/config/linux/arm/entrypoints.txt
    M libc/config/linux/arm/headers.txt
    M libc/config/linux/riscv/entrypoints.txt
    M libc/config/linux/riscv/headers.txt
    M libc/config/linux/syscall_numbers.h.inc
    M libc/config/linux/x86_64/entrypoints.txt
    M libc/config/linux/x86_64/headers.txt
    M libc/include/CMakeLists.txt
    M libc/include/llvm-libc-types/CMakeLists.txt
    A libc/include/llvm-libc-types/struct_epoll_data.h
    A libc/include/llvm-libc-types/struct_epoll_event.h
    A libc/include/sys/epoll.h.def
    M libc/spec/gnu_ext.td
    M libc/spec/linux.td
    M libc/src/sys/CMakeLists.txt
    A libc/src/sys/epoll/CMakeLists.txt
    A libc/src/sys/epoll/epoll_pwait.h
    A libc/src/sys/epoll/epoll_pwait2.h
    A libc/src/sys/epoll/epoll_wait.h
    A libc/src/sys/epoll/linux/CMakeLists.txt
    A libc/src/sys/epoll/linux/epoll_pwait.cpp
    A libc/src/sys/epoll/linux/epoll_pwait2.cpp
    A libc/src/sys/epoll/linux/epoll_wait.cpp
    M libc/test/src/sys/CMakeLists.txt
    A libc/test/src/sys/epoll/CMakeLists.txt
    A libc/test/src/sys/epoll/linux/CMakeLists.txt
    A libc/test/src/sys/epoll/linux/epoll_pwait2_test.cpp
    A libc/test/src/sys/epoll/linux/epoll_pwait_test.cpp
    A libc/test/src/sys/epoll/linux/epoll_wait_test.cpp
    M utils/bazel/llvm-project-overlay/libc/BUILD.bazel
    A utils/bazel/llvm-project-overlay/libc/test/src/sys/epoll/BUILD.bazel

  Log Message:
  -----------
  [reland][libc] add epoll_wait functions (#79635)

The epoll_wait functions are syscall wrappers that were requested by
upstream users. This patch adds them, as well as their header and types.

The tests are currently incomplete since they require epoll_create to
properly test epoll_wait. That will be added in a followup patch since
this one is already very large.


  Commit: 30155fc0ef4fbdce2d79434aaae8d58b2fabb20a
      https://github.com/llvm/llvm-project/commit/30155fc0ef4fbdce2d79434aaae8d58b2fabb20a
  Author: Tianlan Zhou <bobby825 at 126.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/AST/ExprConstant.cpp
    M clang/lib/CodeGen/CGExpr.cpp
    M clang/lib/Sema/SemaChecking.cpp
    M clang/lib/Sema/SemaOverload.cpp
    A clang/test/AST/ast-dump-static-operators.cpp
    M clang/test/CodeGenCXX/cxx2b-static-call-operator.cpp
    M clang/test/CodeGenCXX/cxx2b-static-subscript-operator.cpp
    A clang/test/SemaCXX/cxx2b-static-operator.cpp

  Log Message:
  -----------
  [clang] static operators should evaluate object argument (#68485)

### Description

clang don't evaluate the object argument of `static operator()` and
`static operator[]` currently, for example:

```cpp
#include <iostream>

struct Foo {
    static int operator()(int x, int y) {
        std::cout << "Foo::operator()" << std::endl;
        return x + y;
    }
    static int operator[](int x, int y) {
        std::cout << "Foo::operator[]" << std::endl;
        return x + y;
    }
};
Foo getFoo() {
    std::cout << "getFoo()" << std::endl;
    return {};
}
int main() {
    std::cout << getFoo()(1, 2) << std::endl;
    std::cout << getFoo()[1, 2] << std::endl;
}
```

`getFoo()` is expected to be called, but clang don't call it currently
(17.0.2). This PR fixes this issue.

Fixes #67976.

### Walkthrough

- **clang/lib/Sema/SemaOverload.cpp**
- **`Sema::CreateOverloadedArraySubscriptExpr` &
`Sema::BuildCallToObjectOfClassType`**
Previously clang generate `CallExpr` for static operators, ignoring the
object argument. In this PR `CXXOperatorCallExpr` is generated for
static operators instead, with the object argument as the first
argument.
  - **`TryObjectArgumentInitialization`**
`const` / `volatile` objects are allowed for static methods, so that we
can call static operators on them.
- **clang/lib/CodeGen/CGExpr.cpp**
  - **`CodeGenFunction::EmitCall`**
CodeGen changes for `CXXOperatorCallExpr` with static operators: emit
and ignore the object argument first, then emit the operator call.
- **clang/lib/AST/ExprConstant.cpp**
  - **`‎ExprEvaluatorBase::handleCallExpr‎`**
Evaluation of static operators in constexpr also need some small changes
to work, so that the arguments won't be out of position.
- **clang/lib/Sema/SemaChecking.cpp**
  - **`Sema::CheckFunctionCall`**
Code for argument checking also need to be modify, or it will fail the
test `clang/test/SemaCXX/overloaded-operator-decl.cpp`.

### Tests

- **Added:**
    - **clang/test/AST/ast-dump-static-operators.cpp**
      Verify the AST generated for static operators.
    - **clang/test/SemaCXX/cxx2b-static-operator.cpp**
Static operators should be able to be called on const / volatile
objects.
- **Modified:**
    - **clang/test/CodeGenCXX/cxx2b-static-call-operator.cpp**
    - **clang/test/CodeGenCXX/cxx2b-static-subscript-operator.cpp**
      Matching the new CodeGen.

### Documentation

- **clang/docs/ReleaseNotes.rst**
  Update release notes.

---------

Co-authored-by: Shafik Yaghmour <shafik at users.noreply.github.com>
Co-authored-by: cor3ntin <corentinjabot at gmail.com>
Co-authored-by: Aaron Ballman <aaron at aaronballman.com>


  Commit: 7ff2dc3b49eee49edf9a2c2c7051d643c38e21b1
      https://github.com/llvm/llvm-project/commit/7ff2dc3b49eee49edf9a2c2c7051d643c38e21b1
  Author: Nathan Lanza <nathanlanza at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/tools/llvm-profgen/ProfiledBinary.cpp

  Log Message:
  -----------
  [profgen] Use a 64bit integer for &'ing the loadable address (#79930)

For the linux kernel, the loadable segments start at 0xffff... and thus
the 32 bit integer here was truncating all the meaningful bits. Grow it
to 64 bits.


  Commit: dcc37e7970cf7012af78c5ebf5d4788cefb968a2
      https://github.com/llvm/llvm-project/commit/dcc37e7970cf7012af78c5ebf5d4788cefb968a2
  Author: Pil Eghoff <70582385+pileghoff at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/Sema/SemaChecking.cpp
    M clang/test/C/C2x/n3042.c
    M clang/test/Sema/warn-int-in-bool-context.c

  Log Message:
  -----------
  [Sema] Fix c23 not checking CheckBoolLikeConversion (#79588)

Fixes issue #79435 

Checks for implicit conversion into boolean was previously triggered by
`CheckBoolLikeConversion` for C.
When `bool` as a keyword was introduced in C23,
`CheckBoolLikeConversion` would no longer trigger when using `-std=c23`,
but since logical operators and conditional statements still operate on
scalar values, the checks for implicit conversion into bool were never
triggered.

This fix changes `CheckBoolLikeConversion` to not return early for C23,
even though it has support for bools.


  Commit: 7dc7fc08430b824ca16d3b22542ba73bc4d17881
      https://github.com/llvm/llvm-project/commit/7dc7fc08430b824ca16d3b22542ba73bc4d17881
  Author: Piyou Chen <piyou.chen at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/test/Driver/riscv-arch.c
    M llvm/lib/Support/RISCVISAInfo.cpp
    M llvm/unittests/Support/RISCVISAInfoTest.cpp

  Log Message:
  -----------
  Recommit "[RISCV] Relax march string order constraint (#78120)"

With std::move added to fix build bot failure.

Original commit message:

Follow
https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/14 by
dropping the order requirement of `-march`.

1. single-letter extension can be arbitrary order
    - march=rv32iamdf
2. single-letter extension and multi-letter extension can be mixed
    - march=rv32i_zihintntl_m_a_f_d_svinval
3. multi-letter extension need seperate the following extension by
underscore, otherwise it will be intreprete as one extension.
    - march=rv32i_zbam -> i,zbam
    - march=rv32i_zba_m -> i,zba,m


  Commit: 2e165009b7d1f97337cb4b0f31f6d484d8cf96d9
      https://github.com/llvm/llvm-project/commit/2e165009b7d1f97337cb4b0f31f6d484d8cf96d9
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Support/RISCVISAInfo.cpp

  Log Message:
  -----------
  [RISCV] Use Twine concatentation for error messages in RISCVISAInfo. (#79956)

This avoids converting StringRef to std::string to const char*.


  Commit: 5f6640e268b5e6ead22983ba9e2074e3bbf0612b
      https://github.com/llvm/llvm-project/commit/5f6640e268b5e6ead22983ba9e2074e3bbf0612b
  Author: Saiyedul Islam <Saiyedul.Islam at amd.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M openmp/libomptarget/src/OpenMP/API.cpp

  Log Message:
  -----------
  [OpenMP52][LIBOMPTARGET] Do not throw error in omp_get_mapped_ptr for the host (#80038)

OpenMP spec 5.2 specifies return value to be the host ptr
in case of device_num being same as omp_get_initial_device().


  Commit: 285bc69846e76af805cd106ea3ea538a12f5c9b6
      https://github.com/llvm/llvm-project/commit/285bc69846e76af805cd106ea3ea538a12f5c9b6
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    A llvm/test/Transforms/SLPVectorizer/SystemZ/minbitwidth-trunc.ll

  Log Message:
  -----------
  [SLP]Fix PR80027: Fix costs processing for minbitwidth types.

Need to switch the types, the destination is first in getCastInstrCost
function.


  Commit: 3477bcf4b94395e2c0ed77a139e54240cfe4f27d
      https://github.com/llvm/llvm-project/commit/3477bcf4b94395e2c0ed77a139e54240cfe4f27d
  Author: Guray Ozen <guray.ozen at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/NVGPU/IR/NVGPU.td
    A mlir/test/Dialect/NVGPU/canonicalization.mlir

  Log Message:
  -----------
  [mlir][nvgpu] Mark TMA descriptor as MemWriteAt in `tma.async.store` (#79427)


  Commit: 201eb2b5775cf193c97c60a5eb790003a1e6bedb
      https://github.com/llvm/llvm-project/commit/201eb2b5775cf193c97c60a5eb790003a1e6bedb
  Author: Aaron Ballman <aaron at aaronballman.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/AST/ExprConstant.cpp
    M clang/lib/CodeGen/CGExpr.cpp
    M clang/lib/Sema/SemaChecking.cpp
    M clang/lib/Sema/SemaOverload.cpp
    R clang/test/AST/ast-dump-static-operators.cpp
    M clang/test/CodeGenCXX/cxx2b-static-call-operator.cpp
    M clang/test/CodeGenCXX/cxx2b-static-subscript-operator.cpp
    R clang/test/SemaCXX/cxx2b-static-operator.cpp

  Log Message:
  -----------
  Revert "[clang] static operators should evaluate object argument (#68485)"

This reverts commit 30155fc0ef4fbdce2d79434aaae8d58b2fabb20a.

It seems to have broken some tests in clangd:
http://45.33.8.238/linux/129484/step_9.txt


  Commit: e1ddc3331210957cec2569cef79021fa69363ab1
      https://github.com/llvm/llvm-project/commit/e1ddc3331210957cec2569cef79021fa69363ab1
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/include/__thread/support.h
    M libcxx/include/__thread/support/c11.h
    M libcxx/include/__thread/support/pthread.h
    M libcxx/include/__thread/support/windows.h

  Log Message:
  -----------
  [libc++] Move __libcpp_timespec_t into namespace std (#80004)

It was previously defined outside of namespace std for apparently no
good reason.


  Commit: 97d72839301e6fd005fb258322b96bd46086daa1
      https://github.com/llvm/llvm-project/commit/97d72839301e6fd005fb258322b96bd46086daa1
  Author: Cyndy Ishida <cyndy_ishida at apple.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/TextAPI/Symbol.h

  Log Message:
  -----------
  [TextAPI] Fix -Wdocumentation error, NFC


  Commit: f2a78e68eee53646327f71c475c7f18a28b7f576
      https://github.com/llvm/llvm-project/commit/f2a78e68eee53646327f71c475c7f18a28b7f576
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/HIPSupport.rst
    M clang/lib/Basic/Targets/AMDGPU.cpp
    M clang/test/CodeGenOpenCL/builtins-amdgcn-wave64.cl
    M clang/test/Preprocessor/predefined-arch-macros.c

  Log Message:
  -----------
  [AMDGPU] Do not emit arch dependent macros with unspecified cpu (#80035)

Summary:
Currently, the AMDGPU toolchain accepts not passing `-mcpu` as a means
to create a sort of "generic" IR. The resulting IR will not contain any
target dependent attributes and can then be inserted into another
program via `-mlink-builtin-bitcode` to inherit its attributes.

However, there are a handful of macros that can leak incorrect
information when compiling for an unspecified architecture. Currently,
things like the wavefront size will default to 64, which is actually
variable. We should not expose these macros unless it is known.


  Commit: 5470ea4e36d47ed09595517854f0fa07ca91e16f
      https://github.com/llvm/llvm-project/commit/5470ea4e36d47ed09595517854f0fa07ca91e16f
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/src/__support/GPU/amdgpu/utils.h
    M libc/src/__support/GPU/generic/utils.h
    M libc/src/__support/GPU/nvptx/utils.h
    M libc/src/__support/RPC/rpc.h
    M libc/utils/gpu/server/rpc_server.h

  Log Message:
  -----------
  [libc] Change the starting port index to use the SMID (#79200)

Summary:
The RPC interface uses several ports to provide parallel access. Right
now we begin the search at the beginning, which heavily contests the
early ports. Using the SMID allows us to stagger the starting index
based off of the cluster identifier that is executing the current warp.
Multiple warps can share an SM, but it will guaruntee that the
contention for the low indices is lower.

This also increases the maximum port size to around 4096, this is
because 512 isn't enough to cover the full hardare parallelism needed to
guarantee this doesdn't deadlock.


  Commit: 626fe71fa5ed79cbd41b7b29582560d7adb1220e
      https://github.com/llvm/llvm-project/commit/626fe71fa5ed79cbd41b7b29582560d7adb1220e
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/test/Preprocessor/predefined-arch-macros.c

  Log Message:
  -----------
  [Clang] Fix test failing on systems without ROCm installed

Summary:
Forgot to specify `-nogpulib` which makes this test look for ROCm.


  Commit: 85a847fd1d639a0e7d5319b17e994ea157be6046
      https://github.com/llvm/llvm-project/commit/85a847fd1d639a0e7d5319b17e994ea157be6046
  Author: Konstantin Varlamov <varconsteq at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libcxx/test/libcxx/atomics/atomics.align/align.pass.cpp
    M libcxx/test/libcxx/atomics/atomics.types.generic/atomics.types.float/lockfree.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/assign.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_strong.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_weak.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/ctor.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/exchange.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_add.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/fetch_sub.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/load.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/lockfree.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/notify_all.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/notify_one.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.float.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.minus_equals.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/operator.plus_equals.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/store.pass.cpp
    M libcxx/test/std/atomics/atomics.types.generic/atomics.types.float/wait.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_notify_all.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_notify_one.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp
    M libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait_explicit.pass.cpp
    M libcxx/test/support/atomic_helpers.h
    M libcxx/utils/libcxx/test/features.py

  Log Message:
  -----------
  [libc++] Simplify features for detecting atomics' support. (#75553)

`non-lockfree-atomics` is very similar to `has-64-bit-atomics`; to
simplify, we can have uniform features for atomic types of
increasing sizes (`has-128-bit-atomics`, `has-256-bit-atomics`, etc.).

`is-lockfree-runtime-function` feature was a workaround for the partial
support for large atomic types on older versions of macOS (see
https://reviews.llvm.org/D91911). While we still support macOS 10.14,
conceptually it's simpler to check for support for all the atomic
functionality inside the `has-*-atomics` features, and the workaround is
no longer worth the maintenance cost.


  Commit: 6fecfbc7b62f54bd633e83c22630d7c2a3e5741e
      https://github.com/llvm/llvm-project/commit/6fecfbc7b62f54bd633e83c22630d7c2a3e5741e
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Basic/Targets/AMDGPU.cpp

  Log Message:
  -----------
  [AMDGPU] Correctly exclude the HIP host from arch macros

Summary:
This logic was wrong and accidentally appling to OpenCL.


  Commit: 733b86d3ff8087f1e267c23eb315bb16e3c6c953
      https://github.com/llvm/llvm-project/commit/733b86d3ff8087f1e267c23eb315bb16e3c6c953
  Author: Chelsea Cassanova <chelsea_cassanova at apple.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M lldb/include/lldb/Core/DebuggerEvents.h
    M lldb/include/lldb/Core/Progress.h
    M lldb/source/Core/DebuggerEvents.cpp
    M lldb/source/Core/Progress.cpp

  Log Message:
  -----------
  [lldb][progress] Correctly check total for deterministic progress (#79912)

The `total` parameter for the constructor for Progress was changed to a
std::optional in https://github.com/llvm/llvm-project/pull/77547. It was originally set to 1 to indicate non-determinisitic progress, but this commit changes this. First, `UINT64_MAX` will again be used for non-deterministic progress, and `Progress` now has a static variable set to this value so that we can use this instead of a magic number. 

The member variable `m_total` could be changed to a std::optional as
well, but this means that the `ProgressEventData::GetTotal()` (which is
used for the public API) would
either need to return a std::optional value or it would return some
specific integer to represent non-deterministic progress if `m_total` is
std::nullopt.


  Commit: 1d3300d5027c95c84b335f6adfca7e49cae45bb2
      https://github.com/llvm/llvm-project/commit/1d3300d5027c95c84b335f6adfca7e49cae45bb2
  Author: Peiming Liu <36770114+PeimingLiu at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/lib/Dialect/SparseTensor/Transforms/Utils/SparseTensorLevel.cpp
    M mlir/lib/Dialect/SparseTensor/Transforms/Utils/SparseTensorLevel.h

  Log Message:
  -----------
  [mlir][sparse] use shared value storage between wrapped iterator and the wrapper. (#80046)


  Commit: 235f1e74fe240e414718c64d05bafc01d34c32cb
      https://github.com/llvm/llvm-project/commit/235f1e74fe240e414718c64d05bafc01d34c32cb
  Author: Jinsong Ji <jinsong.ji at intel.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Basic/Builtins.td

  Log Message:
  -----------
  [Clang] Fix typo in __fprintf_chk Prototype (#80012)

An extra int was copied.


  Commit: 30b9140c148923e31a6dbcb2202ef3908481bb29
      https://github.com/llvm/llvm-project/commit/30b9140c148923e31a6dbcb2202ef3908481bb29
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/test/MC/RISCV/rv32zbb-only-valid.s
    M llvm/test/MC/RISCV/rv32zbb-valid.s
    M llvm/test/MC/RISCV/rv64zbb-valid.s
    M llvm/test/MC/RISCV/rv64zbkb-valid.s

  Log Message:
  -----------
  [RISCV] Minor cleanup to rori MC layer testing. NFC

rv32zbb-valid.s tests rv64 and rv32. rv32zbb-only-valid.s only tests rv32.

The rori tests in rv32zbb-only-valid.s produce the same result for rv32 and
rv64 so its better to test them in rv32zbb-valid.s.

Remove a now redundant test case from rv64zbb-valid.s.
Add a missing rori test with imm >= 32 to rv64zbkb-valid.s.


  Commit: 6a21e00e397648141ed36aae4bd958efa09908f3
      https://github.com/llvm/llvm-project/commit/6a21e00e397648141ed36aae4bd958efa09908f3
  Author: Shilei Tian <i at tianshilei.me>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
    A llvm/test/MC/AMDGPU/writelane_m0.s
    A llvm/test/MachineVerifier/writelane_m0.mir

  Log Message:
  -----------
  [AMDGPU][AsmParser] Allow `v_writelane_b32` to use SGPR and M0 as source operands at the same time (#78827)

Currently the asm parser takes `v_writelane_b32 v1, s13, m0` as illegal
instruction for pre-gfx11 because it uses two constant buses while the
hardware
can only allow one. However, based on the comment of
`AMDGPUInstructionSelector::selectWritelane`,
it is allowed to have M0 as lane selector and a SGPR used as SRC0
because the
lane selector doesn't count as a use of constant bus. In fact, codegen
can already
generate this form, but this inconsistency is not exposed because the
validation
of constant bus limitation only happens when paring an assembly but we
don't have
a test case when both SGPR and M0 used as source operands for the
instruction.


  Commit: d8b61d716899736c7f0444d1b18b8e1a536c3472
      https://github.com/llvm/llvm-project/commit/d8b61d716899736c7f0444d1b18b8e1a536c3472
  Author: Aiden Grossman <agrossman154 at yahoo.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/docs/CommandGuide/llvm-exegesis.rst
    A llvm/test/tools/llvm-exegesis/X86/latency/middle-half.s
    M llvm/tools/llvm-exegesis/lib/BenchmarkResult.h
    M llvm/tools/llvm-exegesis/lib/CMakeLists.txt
    A llvm/tools/llvm-exegesis/lib/ResultAggregator.cpp
    A llvm/tools/llvm-exegesis/lib/ResultAggregator.h
    M llvm/tools/llvm-exegesis/lib/SnippetRepetitor.cpp
    M llvm/tools/llvm-exegesis/llvm-exegesis.cpp
    M llvm/unittests/tools/llvm-exegesis/CMakeLists.txt
    A llvm/unittests/tools/llvm-exegesis/ResultAggregatorTest.cpp

  Log Message:
  -----------
  [llvm-exegesis] Add middle half repetition mode (#77020)

This patch adds two new repetition modes to llvm-exegesis, particularly
loop and duplicate repetition modes of what I am terming the middle half
repetition mode. The middle half repetition mode essentially runs each
measurement twice, one with twice the number of iterations of the other.
These two measurements are then agregated by taking their difference.
This subtracts away any setup/overhead that is unrelated to the code in
the snippet, providing more accurate results.

Using this mode on a couple toy examples, I am able to get exact
(integer) throughput values on all of them in contrast to the default
duplicate/loop repetition modes which show a little bit of noise on the
snippet value.


  Commit: 58e8c072aa4ebb11dfab13ed00fa8d61e408516c
      https://github.com/llvm/llvm-project/commit/58e8c072aa4ebb11dfab13ed00fa8d61e408516c
  Author: Shilei Tian <i at tianshilei.me>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/test/MachineVerifier/writelane_m0.mir

  Log Message:
  -----------
  [FIX] Require AMDGPU target in test case `llvm/test/MachineVerifier/writelane_m0.mir`


  Commit: 0dd0cbd324ad13dd7b91edf69a2ca66a6a208c80
      https://github.com/llvm/llvm-project/commit/0dd0cbd324ad13dd7b91edf69a2ca66a6a208c80
  Author: erichkeane <ekeane at nvidia.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Basic/OpenACCKinds.h
    M clang/lib/Parse/ParseOpenACC.cpp
    A clang/test/ParserOpenACC/parse-wait-clause.c

  Log Message:
  -----------
  [OpenACC] Implement 'wait' clause parsing.

The 'wait' clause is parsed the same way as the 'wait' construct, so
this jsut differs to that function.


  Commit: 66ef6900f9f3aa4fab9f6e36af04f775948cdf9d
      https://github.com/llvm/llvm-project/commit/66ef6900f9f3aa4fab9f6e36af04f775948cdf9d
  Author: erichkeane <ekeane at nvidia.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Parse/ParseOpenACC.cpp
    M clang/test/ParserOpenACC/parse-clauses.c

  Log Message:
  -----------
  [OpenACC] Better recover during clause parsing

Previously we gave up immediately and just escaped.  Instead, skip to
the next close paren and see if we can continue parsing the next clause
instead.


  Commit: aa88a09fbc6428fa3c74e2027b0f329d89c332bd
      https://github.com/llvm/llvm-project/commit/aa88a09fbc6428fa3c74e2027b0f329d89c332bd
  Author: LLVM GN Syncbot <llvmgnsyncbot at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/utils/gn/secondary/llvm/tools/llvm-exegesis/lib/BUILD.gn
    M llvm/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/BUILD.gn

  Log Message:
  -----------
  [gn build] Port d8b61d716899


  Commit: a385c379f8694f42d1efb88bb8c5a53fccb6a664
      https://github.com/llvm/llvm-project/commit/a385c379f8694f42d1efb88bb8c5a53fccb6a664
  Author: Yitzhak Mandelbaum <ymand at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp

  Log Message:
  -----------
  [clang][dataflow] Drop block-relative cap on worklist iterations. (#80033)

As per the FIXME, this cap never really served its purpose. This patch
simplifies to a single, caller-specified, absolute cap.


  Commit: 576c4dfa067fa767818a0d80c7072a64c221384e
      https://github.com/llvm/llvm-project/commit/576c4dfa067fa767818a0d80c7072a64c221384e
  Author: michaelrj-google <71531609+michaelrj-google at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/config/linux/x86_64/entrypoints.txt

  Log Message:
  -----------
  [libc] disable epoll_pwait2 due to breakage (#80051)

It appears that sys_epoll_pwait2 isn't always available, so we need to
add some sort of condition to enable it. This patch disables it until
that happens.


  Commit: 2c5a0d392592982bb9c73cbc10c64390b9045873
      https://github.com/llvm/llvm-project/commit/2c5a0d392592982bb9c73cbc10c64390b9045873
  Author: Yitzhak Mandelbaum <ymand at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Analysis/Analyses/PostOrderCFGView.h
    M clang/unittests/Analysis/CFGTest.cpp
    M clang/unittests/Analysis/FlowSensitive/LoggerTest.cpp

  Log Message:
  -----------
  [clang][CFG] Change child order in Reverse Post Order (RPO) iteration. (#80030)

The CFG orders the blocks of loop bodies before those of loop successors
(both numerically, and in the successor order of the loop condition
block). So, RPO necessarily reverses that order, placing the loop
successor *before* the loop body. For many analyses, particularly those
that converge to a fixpoint, this results in potentially significant
extra work, because loop successors will necessarily need to be
reconsidered once the algorithm has reached a fixpoint on the loop body.

This definition of CFG graph traits reverses the order of children, so
that loop bodies will come first in an RPO. Then, the algorithm can
fully evaluate the loop and only then consider successor blocks.


  Commit: 0fa4463e93dca275ee80fd85120e33ccc9f22c5e
      https://github.com/llvm/llvm-project/commit/0fa4463e93dca275ee80fd85120e33ccc9f22c5e
  Author: Valentin Clement (バレンタイン クレメン) <clementval at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/lib/Semantics/resolve-directives.cpp
    M flang/test/Semantics/OpenACC/acc-loop.f90

  Log Message:
  -----------
  [flang][openacc] Check trip count invariance with other IVs (#79906)

2.9.1 The trip count for all loops associated with the collapse clause
must be computable and invariant in all the loops.

This patch checks that iteration range of loops part of a collapse nest
does not depend on outer loops induction variables.

The check is also applied to combined construct with a loop.


  Commit: d9423398ea129e229b20ba42dfe4326e620129b5
      https://github.com/llvm/llvm-project/commit/d9423398ea129e229b20ba42dfe4326e620129b5
  Author: Valentin Clement <clementval at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/lib/Semantics/resolve-directives.cpp
    M flang/test/Semantics/OpenACC/acc-loop.f90

  Log Message:
  -----------
  Revert "[flang][openacc] Check trip count invariance with other IVs (#79906)"

This reverts commit 0fa4463e93dca275ee80fd85120e33ccc9f22c5e.

Breaks buildbot https://lab.llvm.org/buildbot/#/builders/268/builds/7155


  Commit: 9b91c54d9bd3227a49e146c055fb0165567f7f8d
      https://github.com/llvm/llvm-project/commit/9b91c54d9bd3227a49e146c055fb0165567f7f8d
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
    M llvm/test/Instrumentation/MemorySanitizer/msan_asm_conservative.ll

  Log Message:
  -----------
  [msan] Unpoison indirect outputs for userspace using memset for large operands (#79924)

Modify #77393 to clear shadow memory using `llvm.memset.*` when the size
is large, similar to `shouldUseBZeroPlusStoresToInitialize` in clang for
`-ftrivial-auto-var-init=`. The intrinsic, if lowered to libcall, will
use the msan interceptor.

The instruction selector lowers a `StoreInst` to multiple stores, not
utilizing `memset`. When the size is large (e.g.
`store { [100 x i32] } zeroinitializer, ptr %12, align 1`), the
generated code will be long (and `CodeGenPrepare::optimizeInst` will
even crash for a huge size).

```
// Test stack size
template <class T>
void DoNotOptimize(const T& var) { // deprecated by https://github.com/google/benchmark/pull/1493
  asm volatile("" : "+m"(const_cast<T&>(var)));
}

int main() {
  using LargeArray = std::array<int, 1000000>;
  auto large_stack = []() { DoNotOptimize(LargeArray()); };
  /////// CodeGenPrepare::optimizeInst triggers an assertion failure when creating an integer type with a bit width>2**23
  large_stack();
}
```


  Commit: 648560062af8deb4e6478130deb1dd8fa62929a8
      https://github.com/llvm/llvm-project/commit/648560062af8deb4e6478130deb1dd8fa62929a8
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M compiler-rt/lib/dfsan/dfsan_custom.cpp
    M compiler-rt/lib/dfsan/done_abilist.txt
    M compiler-rt/lib/dfsan/libc_ubuntu1404_abilist.txt

  Log Message:
  -----------
  [dfsan] Wrap glibc 2.38 __isoc23_* functions (#79958)

Fix #79283: `test/dfsan/custom.cpp` has undefined symbol linker errors
on glibc 2.38 due to lack of wrappers for `__isoc23_strtol` and
`__isoc23_scanf` family functions.

Implement these wrappers as aliases to existing wrappers, similar to
https://reviews.llvm.org/D158943 for other sanitizers.

`strtol` in a user program, whether or not `_ISOC2X_SOURCE` is defined,
uses the C23 semantics (`strtol("0b1", 0, 0)` => 1), when
`libclang_rt.dfsan.a` is built on glibc 2.38+.


  Commit: a356e6ccada87d6bfc4513fba4b1a682305e094a
      https://github.com/llvm/llvm-project/commit/a356e6ccada87d6bfc4513fba4b1a682305e094a
  Author: PiJoules <6019989+PiJoules at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
    A llvm/test/CodeGen/Thumb/smul_fix.ll
    A llvm/test/CodeGen/Thumb/smul_fix_sat.ll
    A llvm/test/CodeGen/Thumb/umul_fix.ll
    A llvm/test/CodeGen/Thumb/umul_fix_sat.ll

  Log Message:
  -----------
  [SelectionDAG] Expand fixed point multiplication into libcall (#79352)

32-bit ARMv6 with thumb doesn't support MULHS/MUL_LOHI as legal/custom
nodes during expansion which will cause fixed point multiplication of
_Accum types to fail with fixed point arithmetic. Prior to this, we just
happen to use fixed point multiplication on platforms that happen to
support these MULHS/MUL_LOHI.

This patch attempts to check if the multiplication can be done via
libcalls, which are provided by the arm runtime. These libcall attempts
are made elsewhere, so this patch refactors that libcall logic into its
own functions and the fixed point expansion calls and reuses that logic.


  Commit: 404af14f92b8b7318ab3d34bd65d800c0bde1e10
      https://github.com/llvm/llvm-project/commit/404af14f92b8b7318ab3d34bd65d800c0bde1e10
  Author: Maksim Levental <maksim.levental at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/include/mlir-c/BuiltinTypes.h
    M mlir/lib/Bindings/Python/IRTypes.cpp
    M mlir/lib/CAPI/IR/BuiltinTypes.cpp
    M mlir/python/mlir/dialects/_ods_common.py
    M mlir/python/mlir/dialects/memref.py
    M mlir/python/mlir/dialects/transform/structured.py
    M mlir/test/python/dialects/memref.py

  Log Message:
  -----------
  [mlir][python] enable memref.subview (#79393)


  Commit: 24923214e7845acc0e2f56f13e08ee519eba8303
      https://github.com/llvm/llvm-project/commit/24923214e7845acc0e2f56f13e08ee519eba8303
  Author: Schrodinger ZHU Yifan <yifanzhu at rochester.edu>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/config/linux/aarch64/entrypoints.txt
    M libc/config/linux/riscv/entrypoints.txt
    M libc/config/linux/x86_64/entrypoints.txt
    M libc/spec/linux.td
    M libc/spec/posix.td
    M libc/src/sys/mman/CMakeLists.txt
    M libc/src/sys/mman/linux/CMakeLists.txt
    A libc/src/sys/mman/linux/mlock.cpp
    A libc/src/sys/mman/linux/mlock2.cpp
    A libc/src/sys/mman/linux/mlockall.cpp
    A libc/src/sys/mman/linux/munlock.cpp
    A libc/src/sys/mman/linux/munlockall.cpp
    A libc/src/sys/mman/mlock.h
    A libc/src/sys/mman/mlock2.h
    A libc/src/sys/mman/mlockall.h
    A libc/src/sys/mman/munlock.h
    A libc/src/sys/mman/munlockall.h
    M libc/test/src/sys/mman/linux/CMakeLists.txt
    M libc/test/src/sys/mman/linux/mincore_test.cpp
    A libc/test/src/sys/mman/linux/mlock_test.cpp

  Log Message:
  -----------
  [libc] implement mlock/mlock2/munlock/mlockall/munlockall (#79645)

fixes #79336

Co-authored-by: Sirui Mu <msrlancern at gmail.com>


  Commit: 75ea78ab677f8357aa14fd4c0aff5d551a4ff8aa
      https://github.com/llvm/llvm-project/commit/75ea78ab677f8357aa14fd4c0aff5d551a4ff8aa
  Author: Felipe de Azevedo Piovezan <fpiovezan at apple.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
    M llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp

  Log Message:
  -----------
  [DebugNames] Compare TableEntry names more efficiently (#79759)

TableEntry names are pointers into the string table section, and
accessing their
length requires a search for `\0`. However, 99% of the time we only need
to
compare the name against some other other, and such a comparison will
fail as
early as the first character.

This commit adds a method to the interface of TableEntry so that such a
comparison can be done without extracting the full name. It saves 10% in
the
time (1250ms -> 1100 ms) to evaluate the following expression.

```
lldb \
  --batch \
  -o "b CodeGenFunction::GenerateCode" \
  -o run \
  -o "expr Fn" \
  -- \
  clang++ -c -g test.cpp -o /dev/null &> output
```


  Commit: e5cebec521a7cf86ff21dedb8a2c96b3f8331c9d
      https://github.com/llvm/llvm-project/commit/e5cebec521a7cf86ff21dedb8a2c96b3f8331c9d
  Author: jkorous-apple <32549412+jkorous-apple at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Analysis/UnsafeBufferUsage.cpp

  Log Message:
  -----------
  [-Wunsafe-buffer-usage] Fix AST matcher of UUCAddAssignGadget (#79392)

We are not interested in nonpointers being added to.


  Commit: bb770f0df53eee91a803b2829808d82279f7b577
      https://github.com/llvm/llvm-project/commit/bb770f0df53eee91a803b2829808d82279f7b577
  Author: yronglin <yronglin777 at gmail.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M clang/include/clang/AST/TextNodeDumper.h
    M clang/lib/AST/TextNodeDumper.cpp
    M clang/test/AST/ast-dump-for-range-lifetime.cpp
    M clang/test/Import/cxx-default-init-expr/test.cpp

  Log Message:
  -----------
  [Clang] Dump the rewritten sub-expressions in CXXDefaultArgExpr/CXXDefaultInitExpr (#80001)

This patch dump the rewritten sub-expressions in `CXXDefaultArgExpr` and
`CXXDefaultInitExpr`.
This machinery is useful for checking whether the materialized
temporaries is lifetime-extended in the sub-AST of `CXXDefaultArgExpr`
(`CXXDefaultInitExpr` has not been lifetime extendend now).

Signed-off-by: yronglin <yronglin777 at gmail.com>


  Commit: 2f490f924647aa0724bab49cb390d4423fc9fc03
      https://github.com/llvm/llvm-project/commit/2f490f924647aa0724bab49cb390d4423fc9fc03
  Author: Valentin Clement <clementval at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/lib/Semantics/resolve-directives.cpp
    M flang/test/Semantics/OpenACC/acc-loop.f90

  Log Message:
  -----------
  [flang][openacc] Check trip count invariance with other IVs (#79906)

2.9.1 The trip count for all loops associated with the collapse clause must be
computable and invariant in all the loops.

This patch checks that loops part of a collapse nest does not depends on outer
loops induction variables.

The check is also applied to combined construct with a loop.


  Commit: 16c15b5f84836d81084e9987701ca011da5a864f
      https://github.com/llvm/llvm-project/commit/16c15b5f84836d81084e9987701ca011da5a864f
  Author: Nick Desaulniers <nickdesaulniers at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M libc/test/src/sys/mman/linux/mlock_test.cpp

  Log Message:
  -----------
  [libc] disable mlockall w/ MCL_ONFAULT (#80075)

I suspect this is a bug in linux 4.19, as the test passes as written on
my
linux 6.5 machine.

Let's revisit this after the build bots are upgraded.

Link: #80073


  Commit: 7847e44594aa932c0a5f5d2cd15940d2a815c059
      https://github.com/llvm/llvm-project/commit/7847e44594aa932c0a5f5d2cd15940d2a815c059
  Author: Michael Spencer <bigcheesegs at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Basic/DiagnosticSerializationKinds.td
    M clang/include/clang/Basic/FileManager.h
    M clang/include/clang/Lex/HeaderSearch.h
    M clang/include/clang/Lex/HeaderSearchOptions.h
    M clang/include/clang/Serialization/ASTBitCodes.h
    M clang/include/clang/Serialization/ASTReader.h
    M clang/include/clang/Serialization/ASTWriter.h
    M clang/include/clang/Serialization/ModuleFile.h
    M clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h
    M clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
    M clang/lib/Basic/FileManager.cpp
    M clang/lib/Frontend/CompilerInvocation.cpp
    M clang/lib/Lex/HeaderSearch.cpp
    M clang/lib/Serialization/ASTReader.cpp
    M clang/lib/Serialization/ASTWriter.cpp
    M clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp
    M clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
    M clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
    A clang/test/ClangScanDeps/optimize-vfs-edgecases.m
    A clang/test/ClangScanDeps/optimize-vfs-leak.m
    A clang/test/ClangScanDeps/optimize-vfs-pch.m
    A clang/test/ClangScanDeps/optimize-vfs.m
    M clang/tools/clang-scan-deps/ClangScanDeps.cpp
    M llvm/include/llvm/Support/VirtualFileSystem.h
    M llvm/lib/Support/VirtualFileSystem.cpp
    M llvm/unittests/Support/VirtualFileSystemTest.cpp

  Log Message:
  -----------
  [clang][DependencyScanner] Remove unused -ivfsoverlay files (#73734)

`-ivfsoverlay` files are unused when building most modules. Enable
removing them by,
* adding a way to visit the filesystem tree with extensible RTTI to
  access each `RedirectingFileSystem`.
* Adding tracking to `RedirectingFileSystem` to record when it
  actually redirects a file access.
* Storing this information in each PCM.

Usage tracking is only enabled when iterating over the source manager
and affecting modulemaps. Here each path is stated to cause an access.
During scanning these stats all hit the cache.


  Commit: 86cd2fbdfe67d70a7fe061ed5d3a644f50f070f5
      https://github.com/llvm/llvm-project/commit/86cd2fbdfe67d70a7fe061ed5d3a644f50f070f5
  Author: jkorous-apple <32549412+jkorous-apple at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/test/SemaCXX/warn-unsafe-buffer-usage-fixits-pointer-access.cpp

  Log Message:
  -----------
  [-Wunsafe-buffer-usage][NFC] Add testcase for non-unsafe pointer (#80076)

This adds a missing CHECK-NOT directive for an existing test case.


  Commit: c8c3fe70ae09a48408ee15a256e52a4624e0291c
      https://github.com/llvm/llvm-project/commit/c8c3fe70ae09a48408ee15a256e52a4624e0291c
  Author: Jacek Caban <jacek at codeweavers.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M lld/COFF/DLL.cpp
    M lld/test/COFF/imports.test
    M lld/test/COFF/pdb-publics-import.test

  Log Message:
  -----------
  [LLD][COFF] Align import directory chunk. (#80014)

The loader can usually handle an unaligned import dir chunk, but It's not
optimal and it's not what MSVC link.exe does.

Windows refuses to load ARM64X binaries with unaligned import directory.
aarch64 and arm64ec imports are shared in such binaries as much as
possible. As long as they use the same set of functions from given import
directory, both the directory and import addresses chunk are just shared.
When used set of functions differs, ARM64X dynamic relocations are used
to modify import dir to point to different names and import addresses for
its EC view. I suspect that the loader expects some alignment on ARM64X
dynamic relocation offset and may not be the case when relocated import
dir is not aligned.


  Commit: 8b38970811086b09752a5909d0c17de4d0cd04c3
      https://github.com/llvm/llvm-project/commit/8b38970811086b09752a5909d0c17de4d0cd04c3
  Author: Katherine Rasmussen <krasmussen at lbl.gov>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M flang/docs/Intrinsics.md
    M flang/lib/Evaluate/intrinsics.cpp
    M flang/lib/Semantics/check-call.cpp
    A flang/test/Semantics/image_index01.f90
    A flang/test/Semantics/image_index02.f90

  Log Message:
  -----------
  [flang] Add image_index to list of intrinsics and add tests (#79519)

Add image_index to the list of intrinsic functions and add additional
check on its args in check-call.cpp. Add two semantics tests for
image_index.


  Commit: 4effff21fb2f3462e06fcbd7812562f4771b0487
      https://github.com/llvm/llvm-project/commit/4effff21fb2f3462e06fcbd7812562f4771b0487
  Author: Kai Sasaki <lewuathe at gmail.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp
    M mlir/test/Conversion/ComplexToStandard/convert-to-standard.mlir
    M mlir/test/Conversion/ComplexToStandard/full-conversion.mlir
    M mlir/test/Integration/Dialect/Complex/CPU/correctness.mlir

  Log Message:
  -----------
  [mlir][complex] Prevent underflow in complex.abs (#79786)

The previous PR was not correct on the way to handle the negative value.
It is necessary to take the absolute value of the given real (or
imaginary) part to be multiplied with the sqrt part.

See: https://github.com/llvm/llvm-project/pull/76316


  Commit: b21a2f9365b6c5fd464a97be5dfe7085742870ef
      https://github.com/llvm/llvm-project/commit/b21a2f9365b6c5fd464a97be5dfe7085742870ef
  Author: Michael Spencer <bigcheesegs at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
    A clang/test/ClangScanDeps/missing-vfs.m

  Log Message:
  -----------
  [clang][scan-deps] Stop scanning if any scanning setup emits an error.

Without this scanning will continue and later hit an assert that the
number of `RedirectingFileSystem`s matches the number of -ivfsoverlay
arguments.


  Commit: c806d8c7e948f01405be4ea344d883f066f8ae59
      https://github.com/llvm/llvm-project/commit/c806d8c7e948f01405be4ea344d883f066f8ae59
  Author: rmarker <37921131+rmarker at users.noreply.github.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/docs/tools/dump_format_style.py

  Log Message:
  -----------
  [clang-format] Explicitly open DOC_FILE with utf-8 in dump_format_style.py (#79805)

The dump_format_style.py script generates the clang-format style options
documentation.
There was an issue where the script could include spurious characters in
the output when run in windows. It appears that it wasn't defaulting to
the correct encoding when reading the input.
This has been addressed by explicitly setting the encoding when opening
the file.


  Commit: b91bba89edfb25d011e1f2366cda5dec605c87f6
      https://github.com/llvm/llvm-project/commit/b91bba89edfb25d011e1f2366cda5dec605c87f6
  Author: Jakub Kuderski <jakub at nod-labs.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRV.h
    M mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp
    M mlir/lib/Conversion/MemRefToSPIRV/MapMemRefStorageClassPass.cpp

  Log Message:
  -----------
  [mlir][spirv] Use `AttrTypeReplacer` in map-memref-storage-class. NFC. (#80055)

Keep the conversion target to allow for checking if the op is legal.


  Commit: d783933bc910ac005e18928d22b6c10c4fe8d6f6
      https://github.com/llvm/llvm-project/commit/d783933bc910ac005e18928d22b6c10c4fe8d6f6
  Author: Yaraslau <yaraslau.tamashevich at gmail.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    A clang/test/ClangScanDeps/empty.cpp
    M clang/tools/clang-scan-deps/ClangScanDeps.cpp

  Log Message:
  -----------
  [clang-scan-deps] Fix check for empty `Compilation` (#75545)

Closes https://github.com/llvm/llvm-project/issues/64144

Instead of checking for `nullptr` we need to ensure that `JobList` is
not empty to proceed


  Commit: 2abcbbd96ad731b05fae970a0abb23cda784dddd
      https://github.com/llvm/llvm-project/commit/2abcbbd96ad731b05fae970a0abb23cda784dddd
  Author: Maksim Panchenko <maks at fb.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M bolt/include/bolt/Core/BinaryContext.h
    M bolt/include/bolt/Utils/CommandLineOpts.h
    M bolt/lib/Profile/DataAggregator.cpp
    M bolt/lib/Rewrite/LinuxKernelRewriter.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp
    M bolt/lib/Utils/CommandLineOpts.cpp
    M bolt/test/X86/linux-orc.s

  Log Message:
  -----------
  [BOLT] Detect Linux kernel based on ELF program headers (#80086)

Check if program header addresses fall into the kernel space to detect a
Linux kernel binary on x86-64.

Delete opts::LinuxKernelMode and use BinaryContext::IsLinuxKernel
instead.


  Commit: b4d832c77dcba4136132559a5183883cf064389d
      https://github.com/llvm/llvm-project/commit/b4d832c77dcba4136132559a5183883cf064389d
  Author: Carl Peto <carl.peto at me.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Parse/ParseExpr.cpp
    M clang/lib/Parse/ParseObjc.cpp
    M clang/lib/Sema/SemaDecl.cpp

  Log Message:
  -----------
  [clang] Improved isSimpleTypeSpecifier (#79037)

- Sema::isSimpleTypeSpecifier return true for _Bool in c99 (currently
returns false for _Bool, regardless of C dialect). (Fixes #72203)
- replace the logic with a check for simple types and a proper check for
a valid keyword in the appropriate dialect

Co-authored-by: Carl Peto <CPeto at becrypt.com>


  Commit: c761b4a5e4cc003a2c850898e1dc67d2637cfb0c
      https://github.com/llvm/llvm-project/commit/c761b4a5e4cc003a2c850898e1dc67d2637cfb0c
  Author: Billy Laws <blaws05 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
    M llvm/test/CodeGen/AArch64/vararg-tallcall.ll

  Log Message:
  -----------
  [AArch64] Fix variadic tail-calls on ARM64EC (#79774)

ARM64EC varargs calls expect that x4 = sp at entry, special handling is
needed to ensure this with tail calls since they occur after the
epilogue and the x4 write happens before.

I tried going through AArch64MachineFrameLowering for this, hoping to
avoid creating the dummy object but this was the best I could do since
the stack info that uses isn't populated at this stage,
CreateFixedObject also explicitly forbids 0 sized objects.


  Commit: ba4bd3e5268875b31ef01640c5912663797c952a
      https://github.com/llvm/llvm-project/commit/ba4bd3e5268875b31ef01640c5912663797c952a
  Author: Billy Laws <blaws05 at gmail.com>
  Date:   2024-02-01 (Thu, 01 Feb 2024)

  Changed paths:

  Log Message:
  -----------
  [𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.4

[skip ci]


Compare: https://github.com/llvm/llvm-project/compare/a4aaab5939e5...ba4bd3e52688


More information about the All-commits mailing list