[llvm-branch-commits] [clang] 11c3a21 - [analyzer] Workaround crash on encountering Class non-type template parameters

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: Balazs Benics
Date: 2022-11-15T15:37:36-08:00
New Revision: 11c3a21f8d1ba21c7744ba9d272c26c2ce3c58a0

URL: 
https://github.com/llvm/llvm-project/commit/11c3a21f8d1ba21c7744ba9d272c26c2ce3c58a0
DIFF: 
https://github.com/llvm/llvm-project/commit/11c3a21f8d1ba21c7744ba9d272c26c2ce3c58a0.diff

LOG: [analyzer] Workaround crash on encountering Class non-type template 
parameters

The Clang Static Analyzer will crash on this code:
```lang=C++
struct Box {
  int value;
};
template  int get() {
  return V.value;
}
template int get();
```
https://godbolt.org/z/5Yb1sMMMb

The problem is that we don't account for encountering `TemplateParamObjectDecl`s
within the `DeclRefExpr` handler in the `ExprEngine`.

IMO we should create a new memregion for representing such template
param objects, to model their language semantics.
Such as:
 - it should have global static storage
 - for two identical values, their addresses should be identical as well
http://eel.is/c%2B%2Bdraft/temp.param#8

I was thinking of introducing a `TemplateParamObjectRegion` under `DeclRegion`
for this purpose. It could have `TemplateParamObjectDecl` as a field.

The `TemplateParamObjectDecl::getValue()` returns `APValue`, which might
represent multiple levels of structures, unions and other goodies -
making the transformation from `APValue` to `SVal` a bit complicated.

That being said, for now, I think having `Unknowns` for such cases is
definitely an improvement to crashing, hence I'm proposing this patch.

Reviewed By: xazax.hun

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

(cherry picked from commit b062ee7dc4515b0a42157717105839627d5542bb)

Added: 
clang/test/Analysis/template-param-objects.cpp

Modified: 
clang/lib/StaticAnalyzer/Core/ExprEngine.cpp

Removed: 




diff  --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp 
b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
index 19149d0798229..ab65612bce90e 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -2839,6 +2839,12 @@ void ExprEngine::VisitCommonDeclRefExpr(const Expr *Ex, 
const NamedDecl *D,
 return;
   }
 
+  if (const auto *TPO = dyn_cast(D)) {
+// FIXME: We should meaningfully implement this.
+(void)TPO;
+return;
+  }
+
   llvm_unreachable("Support for this Decl not implemented.");
 }
 

diff  --git a/clang/test/Analysis/template-param-objects.cpp 
b/clang/test/Analysis/template-param-objects.cpp
new file mode 100644
index 0..dde95fa62cb65
--- /dev/null
+++ b/clang/test/Analysis/template-param-objects.cpp
@@ -0,0 +1,33 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection \
+// RUN:-analyzer-config eagerly-assume=false -std=c++20 -verify %s
+
+template  void clang_analyzer_dump(T);
+void clang_analyzer_eval(bool);
+
+struct Box {
+  int value;
+};
+bool operator ==(Box lhs, Box rhs) {
+  return lhs.value == rhs.value;
+}
+template  void dumps() {
+  clang_analyzer_dump(V);// expected-warning {{lazyCompoundVal}}
+  clang_analyzer_dump(&V);   // expected-warning {{Unknown}}
+  clang_analyzer_dump(V.value);  // expected-warning {{Unknown}} FIXME: It 
should be '6 S32b'.
+  clang_analyzer_dump(&V.value); // expected-warning {{Unknown}}
+}
+template void dumps();
+
+// [temp.param].7.3.2:
+// "All such template parameters in the program of the same type with the
+// same value denote the same template parameter object."
+template  void stable_addresses() {
+  clang_analyzer_eval(&A1 == &A2); // expected-warning {{UNKNOWN}} FIXME: It 
should be TRUE.
+  clang_analyzer_eval(&B1 == &B2); // expected-warning {{UNKNOWN}} FIXME: It 
should be TRUE.
+  clang_analyzer_eval(&A1 == &B2); // expected-warning {{UNKNOWN}} FIXME: It 
should be FALSE.
+
+  clang_analyzer_eval(A1 == A2); // expected-warning {{UNKNOWN}} FIXME: It 
should be TRUE.
+  clang_analyzer_eval(B1 == B2); // expected-warning {{UNKNOWN}} FIXME: It 
should be TRUE.
+  clang_analyzer_eval(A1 == B2); // expected-warning {{UNKNOWN}} FIXME: It 
should be FALSE.
+}
+template void stable_addresses();



___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [llvm] 68799e7 - [GlobalOpt] Don't remove inalloca from varargs functions

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: Arthur Eubanks
Date: 2022-11-15T15:40:40-08:00
New Revision: 68799e789fc5f2a5ff25beffa4dc8828780c08fb

URL: 
https://github.com/llvm/llvm-project/commit/68799e789fc5f2a5ff25beffa4dc8828780c08fb
DIFF: 
https://github.com/llvm/llvm-project/commit/68799e789fc5f2a5ff25beffa4dc8828780c08fb.diff

LOG: [GlobalOpt] Don't remove inalloca from varargs functions

Varargs and inalloca have a weird interaction where varargs are actually
passed via the inalloca alloca. Removing inalloca breaks the varargs
because they're still not passed as separate arguments.

Fixes #58718

Reviewed By: rnk

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

(cherry picked from commit 8c49b01a1ee051ab2c09be4cffc83656ccc0fbe6)

Added: 
llvm/test/Transforms/GlobalOpt/inalloca-varargs.ll

Modified: 
llvm/lib/Transforms/IPO/GlobalOpt.cpp

Removed: 




diff  --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp 
b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
index 6df0409256bbd..6fc7b29c5b78a 100644
--- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
@@ -2003,7 +2003,7 @@ OptimizeFunctions(Module &M,
 // FIXME: We should also hoist alloca affected by this to the entry
 // block if possible.
 if (F.getAttributes().hasAttrSomewhere(Attribute::InAlloca) &&
-!F.hasAddressTaken() && !hasMustTailCallers(&F)) {
+!F.hasAddressTaken() && !hasMustTailCallers(&F) && !F.isVarArg()) {
   RemoveAttribute(&F, Attribute::InAlloca);
   Changed = true;
 }

diff  --git a/llvm/test/Transforms/GlobalOpt/inalloca-varargs.ll 
b/llvm/test/Transforms/GlobalOpt/inalloca-varargs.ll
new file mode 100644
index 0..188210782edd9
--- /dev/null
+++ b/llvm/test/Transforms/GlobalOpt/inalloca-varargs.ll
@@ -0,0 +1,38 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 
UTC_ARGS: --function-signature
+; RUN: opt -passes=globalopt -S < %s | FileCheck %s
+
+define i32 @main(ptr %a) {
+; CHECK-LABEL: define {{[^@]+}}@main
+; CHECK-SAME: (ptr [[A:%.*]]) local_unnamed_addr {
+; CHECK-NEXT:[[ARGMEM:%.*]] = alloca inalloca <{ ptr, i32 }>, align 4
+; CHECK-NEXT:store ptr [[A]], ptr [[ARGMEM]], align 8
+; CHECK-NEXT:[[G0:%.*]] = getelementptr inbounds <{ ptr, i32 }>, ptr 
[[ARGMEM]], i32 0, i32 1
+; CHECK-NEXT:store i32 5, ptr [[G0]], align 4
+; CHECK-NEXT:[[CALL3:%.*]] = call i32 (ptr, ...) @i(ptr inalloca(ptr) 
[[ARGMEM]])
+; CHECK-NEXT:ret i32 [[CALL3]]
+;
+  %argmem = alloca inalloca <{ ptr, i32 }>, align 4
+  store ptr %a, ptr %argmem, align 8
+  %g0 = getelementptr inbounds <{ ptr, i32 }>, ptr %argmem, i32 0, i32 1
+  store i32 5, ptr %g0, align 4
+  %call3 = call i32 (ptr, ...) @i(ptr inalloca(ptr) %argmem)
+  ret i32 %call3
+}
+
+define internal i32 @i(ptr inalloca(ptr) %a, ...) {
+; CHECK-LABEL: define {{[^@]+}}@i
+; CHECK-SAME: (ptr inalloca(ptr) [[A:%.*]], ...) unnamed_addr {
+; CHECK-NEXT:[[AP:%.*]] = alloca ptr, align 4
+; CHECK-NEXT:call void @llvm.va_start(ptr [[AP]])
+; CHECK-NEXT:[[ARGP_CUR:%.*]] = load ptr, ptr [[AP]], align 4
+; CHECK-NEXT:[[L:%.*]] = load i32, ptr [[ARGP_CUR]], align 4
+; CHECK-NEXT:ret i32 [[L]]
+;
+  %ap = alloca ptr, align 4
+  call void @llvm.va_start(ptr %ap)
+  %argp.cur = load ptr, ptr %ap, align 4
+  %l = load i32, ptr %argp.cur, align 4
+  ret i32 %l
+}
+
+declare void @llvm.va_start(ptr)



___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [lldb] 392963b - [lldb] Fix 'error: non-const lvalue...' caused by SWIG 4.1.0

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: Jitka Plesnikova
Date: 2022-11-15T15:42:01-08:00
New Revision: 392963bb1daf7ec8822a0f02929a8ada17eb0a0a

URL: 
https://github.com/llvm/llvm-project/commit/392963bb1daf7ec8822a0f02929a8ada17eb0a0a
DIFF: 
https://github.com/llvm/llvm-project/commit/392963bb1daf7ec8822a0f02929a8ada17eb0a0a.diff

LOG: [lldb] Fix 'error: non-const lvalue...' caused by SWIG 4.1.0

Fix the failure caused by change in SwigValueWraper for C++11 and later
for improved move semantics in SWIG commit.

https://github.com/swig/swig/commit/d1055f4b3d51cb8060893f8036846ac743302dab
(cherry picked from commit f0a25fe0b746f56295d5c02116ba28d2f965c175)

Added: 


Modified: 
lldb/bindings/python/python-typemaps.swig

Removed: 




diff  --git a/lldb/bindings/python/python-typemaps.swig 
b/lldb/bindings/python/python-typemaps.swig
index bf3de66b91bf1..d45431c771ca3 100644
--- a/lldb/bindings/python/python-typemaps.swig
+++ b/lldb/bindings/python/python-typemaps.swig
@@ -435,7 +435,7 @@ template <> bool SetNumberFromPyObject(double 
&number, PyObject *obj) {
 
 %typemap(out) lldb::FileSP {
   $result = nullptr;
-  lldb::FileSP &sp = $1;
+  const lldb::FileSP &sp = $1;
   if (sp) {
 PythonFile pyfile = unwrapOrSetPythonException(PythonFile::FromFile(*sp));
 if (!pyfile.IsValid())



___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [lldb] dc8f6ff - [lldb] Get rid of __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: serge-sans-paille
Date: 2022-11-15T15:42:01-08:00
New Revision: dc8f6ffc3bf297098a1dfd3fbce801afbe9f5238

URL: 
https://github.com/llvm/llvm-project/commit/dc8f6ffc3bf297098a1dfd3fbce801afbe9f5238
DIFF: 
https://github.com/llvm/llvm-project/commit/dc8f6ffc3bf297098a1dfd3fbce801afbe9f5238.diff

LOG: [lldb] Get rid of __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS

C++11 made the use of these macro obsolete, see 
https://sourceware.org/bugzilla/show_bug.cgi?id=15366

As a side effect this prevents https://github.com/swig/swig/issues/2193.

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

(cherry picked from commit 81fc5f7909a4ef5a8d4b5da2a10f77f7cb01ba63)

Added: 


Modified: 
lldb/bindings/CMakeLists.txt
lldb/bindings/interfaces.swig

Removed: 




diff  --git a/lldb/bindings/CMakeLists.txt b/lldb/bindings/CMakeLists.txt
index c8aa0bcf9681..9eed2f1e6299 100644
--- a/lldb/bindings/CMakeLists.txt
+++ b/lldb/bindings/CMakeLists.txt
@@ -26,8 +26,6 @@ set(SWIG_COMMON_FLAGS
   -features autodoc
   -I${LLDB_SOURCE_DIR}/include
   -I${CMAKE_CURRENT_SOURCE_DIR}
-  -D__STDC_LIMIT_MACROS
-  -D__STDC_CONSTANT_MACROS
   ${DARWIN_EXTRAS}
 )
 

diff  --git a/lldb/bindings/interfaces.swig b/lldb/bindings/interfaces.swig
index c9a6d0f06056..021c7683d170 100644
--- a/lldb/bindings/interfaces.swig
+++ b/lldb/bindings/interfaces.swig
@@ -1,8 +1,5 @@
 /* Various liblldb typedefs that SWIG needs to know about.  */
 #define __extension__ /* Undefine GCC keyword to make Swig happy when 
processing glibc's stdint.h. */
-/* The ISO C99 standard specifies that in C++ implementations limit macros such
-   as INT32_MAX should only be defined if __STDC_LIMIT_MACROS is. */
-#define __STDC_LIMIT_MACROS
 %include "stdint.i"
 
 %include "lldb/lldb-defines.h"



___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [llvm] a399896 - [VectorUtils] Skip interleave members with diff type and alloca sizes.

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: Florian Hahn
Date: 2022-11-15T15:45:14-08:00
New Revision: a399896637584c86acd61afca5bbfe8ed76a7c7d

URL: 
https://github.com/llvm/llvm-project/commit/a399896637584c86acd61afca5bbfe8ed76a7c7d
DIFF: 
https://github.com/llvm/llvm-project/commit/a399896637584c86acd61afca5bbfe8ed76a7c7d.diff

LOG: [VectorUtils] Skip interleave members with diff type and alloca sizes.

Currently, codegen doesn't support cases where the type size doesn't
match the alloc size. Skip them for now.

Fixes #58722.

(cherry picked from commit 758699c39984296f20a4dac44c6892065601c4cd)

Added: 

llvm/test/Transforms/LoopVectorize/AArch64/interleave-allocsize-not-equal-typesize.ll

Modified: 
llvm/lib/Analysis/VectorUtils.cpp

Removed: 




diff  --git a/llvm/lib/Analysis/VectorUtils.cpp 
b/llvm/lib/Analysis/VectorUtils.cpp
index c4795a80ead24..bc20f33f174c4 100644
--- a/llvm/lib/Analysis/VectorUtils.cpp
+++ b/llvm/lib/Analysis/VectorUtils.cpp
@@ -1110,6 +1110,12 @@ void InterleavedAccessInfo::collectConstStrideAccesses(
 continue;
   Type *ElementTy = getLoadStoreType(&I);
 
+  // Currently, codegen doesn't support cases where the type size doesn't
+  // match the alloc size. Skip them for now.
+  uint64_t Size = DL.getTypeAllocSize(ElementTy);
+  if (Size * 8 != DL.getTypeSizeInBits(ElementTy))
+continue;
+
   // We don't check wrapping here because we don't know yet if Ptr will be
   // part of a full group or a group with gaps. Checking wrapping for all
   // pointers (even those that end up in groups with no gaps) will be 
overly
@@ -1121,7 +1127,6 @@ void InterleavedAccessInfo::collectConstStrideAccesses(
 /*Assume=*/true, 
/*ShouldCheckWrap=*/false);
 
   const SCEV *Scev = replaceSymbolicStrideSCEV(PSE, Strides, Ptr);
-  uint64_t Size = DL.getTypeAllocSize(ElementTy);
   AccessStrideInfo[&I] = StrideDescriptor(Stride, Scev, Size,
   getLoadStoreAlignment(&I));
 }

diff  --git 
a/llvm/test/Transforms/LoopVectorize/AArch64/interleave-allocsize-not-equal-typesize.ll
 
b/llvm/test/Transforms/LoopVectorize/AArch64/interleave-allocsize-not-equal-typesize.ll
new file mode 100644
index 0..32ca12ee7e0ef
--- /dev/null
+++ 
b/llvm/test/Transforms/LoopVectorize/AArch64/interleave-allocsize-not-equal-typesize.ll
@@ -0,0 +1,141 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes=loop-vectorize -S %s | FileCheck %s
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+target triple = "aarch64-unknown-linux-gnu"
+
+; Make sure LV does not crash when analyzing potential interleave groups with
+; accesses where the typesize doesn't match to allocsize.
+define void @pr58722_load_interleave_group(ptr %src, ptr %dst) {
+; CHECK-LABEL: @pr58722_load_interleave_group(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:br i1 false, label [[SCALAR_PH:%.*]], label 
[[VECTOR_MEMCHECK:%.*]]
+; CHECK:   vector.memcheck:
+; CHECK-NEXT:[[UGLYGEP:%.*]] = getelementptr i8, ptr [[DST:%.*]], i64 40004
+; CHECK-NEXT:[[UGLYGEP1:%.*]] = getelementptr i8, ptr [[SRC:%.*]], i64 
80007
+; CHECK-NEXT:[[BOUND0:%.*]] = icmp ult ptr [[DST]], [[UGLYGEP1]]
+; CHECK-NEXT:[[BOUND1:%.*]] = icmp ult ptr [[SRC]], [[UGLYGEP]]
+; CHECK-NEXT:[[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
+; CHECK-NEXT:br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]], label 
[[VECTOR_PH:%.*]]
+; CHECK:   vector.ph:
+; CHECK-NEXT:br label [[VECTOR_BODY:%.*]]
+; CHECK:   vector.body:
+; CHECK-NEXT:[[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ 
[[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
+; CHECK-NEXT:[[TMP0:%.*]] = add i64 [[INDEX]], 0
+; CHECK-NEXT:[[TMP1:%.*]] = add i64 [[INDEX]], 1
+; CHECK-NEXT:[[TMP2:%.*]] = add i64 [[INDEX]], 2
+; CHECK-NEXT:[[TMP3:%.*]] = add i64 [[INDEX]], 3
+; CHECK-NEXT:[[TMP4:%.*]] = getelementptr inbounds i64, ptr [[SRC]], i64 
[[TMP0]]
+; CHECK-NEXT:[[TMP5:%.*]] = getelementptr inbounds i64, ptr [[SRC]], i64 
[[TMP1]]
+; CHECK-NEXT:[[TMP6:%.*]] = getelementptr inbounds i64, ptr [[SRC]], i64 
[[TMP2]]
+; CHECK-NEXT:[[TMP7:%.*]] = getelementptr inbounds i64, ptr [[SRC]], i64 
[[TMP3]]
+; CHECK-NEXT:[[TMP8:%.*]] = load i32, ptr [[TMP4]], align 4, !alias.scope 
!0
+; CHECK-NEXT:[[TMP9:%.*]] = load i32, ptr [[TMP5]], align 4, !alias.scope 
!0
+; CHECK-NEXT:[[TMP10:%.*]] = insertelement <2 x i32> poison, i32 [[TMP8]], 
i32 0
+; CHECK-NEXT:[[TMP11:%.*]] = insertelement <2 x i32> [[TMP10]], i32 
[[TMP9]], i32 1
+; CHECK-NEXT:[[TMP12:%.*]] = load i32, ptr [[TMP6]], align 4, !alias.scope 
!0
+; CHECK-NEXT:[[TMP13:%.*]] = load i32, ptr [[TMP7]], align 4, !alias.scope 
!0
+; CHECK-NEXT:[[TMP14:%.*]] = insertelement <2 x i32> poison, i32 
[[TMP12]], i32 0
+; CHECK-NEXT:

[llvm-branch-commits] [llvm] 154e88a - Bump version to 15.0.5

2022-11-15 Thread Tom Stellard via llvm-branch-commits

Author: Tom Stellard
Date: 2022-11-15T22:28:29-08:00
New Revision: 154e88af7ec97d9b9f389e55d45bf07108a9a097

URL: 
https://github.com/llvm/llvm-project/commit/154e88af7ec97d9b9f389e55d45bf07108a9a097
DIFF: 
https://github.com/llvm/llvm-project/commit/154e88af7ec97d9b9f389e55d45bf07108a9a097.diff

LOG: Bump version to 15.0.5

Added: 


Modified: 
libcxx/include/__config
llvm/CMakeLists.txt
llvm/utils/gn/secondary/llvm/version.gni
llvm/utils/lit/lit/__init__.py
utils/bazel/llvm-project-overlay/clang/BUILD.bazel
utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
utils/bazel/llvm-project-overlay/lld/BUILD.bazel
utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h

Removed: 




diff  --git a/libcxx/include/__config b/libcxx/include/__config
index 810189c94a94c..d5ac34eba37a2 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -36,7 +36,7 @@
 
 #ifdef __cplusplus
 
-#  define _LIBCPP_VERSION 15004
+#  define _LIBCPP_VERSION 15005
 
 #  define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y
 #  define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y)

diff  --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 3d6f5e6f9d3da..b101a1a187c9f 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -22,7 +22,7 @@ if(NOT DEFINED LLVM_VERSION_MINOR)
   set(LLVM_VERSION_MINOR 0)
 endif()
 if(NOT DEFINED LLVM_VERSION_PATCH)
-  set(LLVM_VERSION_PATCH 4)
+  set(LLVM_VERSION_PATCH 5)
 endif()
 if(NOT DEFINED LLVM_VERSION_SUFFIX)
   set(LLVM_VERSION_SUFFIX)

diff  --git a/llvm/utils/gn/secondary/llvm/version.gni 
b/llvm/utils/gn/secondary/llvm/version.gni
index 3b890e00bec32..391132f1a316a 100644
--- a/llvm/utils/gn/secondary/llvm/version.gni
+++ b/llvm/utils/gn/secondary/llvm/version.gni
@@ -1,4 +1,4 @@
 llvm_version_major = 15
 llvm_version_minor = 0
-llvm_version_patch = 4
+llvm_version_patch = 5
 llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"

diff  --git a/llvm/utils/lit/lit/__init__.py b/llvm/utils/lit/lit/__init__.py
index 04f6e94535e42..e3c8693c04218 100644
--- a/llvm/utils/lit/lit/__init__.py
+++ b/llvm/utils/lit/lit/__init__.py
@@ -2,7 +2,7 @@
 
 __author__ = 'Daniel Dunbar'
 __email__ = 'dan...@minormatter.com'
-__versioninfo__ = (15, 0, 4)
+__versioninfo__ = (15, 0, 5)
 __version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
 
 __all__ = []

diff  --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel 
b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
index 96b462717be9a..8f21799d4888b 100644
--- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
@@ -358,11 +358,11 @@ genrule(
 name = "basic_version_gen",
 outs = ["include/clang/Basic/Version.inc"],
 cmd = (
-"echo '#define CLANG_VERSION 15.0.4' >> $@\n" +
+"echo '#define CLANG_VERSION 15.0.5' >> $@\n" +
 "echo '#define CLANG_VERSION_MAJOR 15' >> $@\n" +
 "echo '#define CLANG_VERSION_MINOR 0' >> $@\n" +
-"echo '#define CLANG_VERSION_PATCHLEVEL 4' >> $@\n" +
-"echo '#define CLANG_VERSION_STRING \"15.0.4\"' >> $@\n"
+"echo '#define CLANG_VERSION_PATCHLEVEL 5' >> $@\n" +
+"echo '#define CLANG_VERSION_STRING \"15.0.5\"' >> $@\n"
 ),
 )
 

diff  --git 
a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h 
b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
index 5d157492eae37..ec15fccc089b3 100644
--- a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
+++ b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
@@ -93,7 +93,7 @@
 /* CLANG_HAVE_RLIMITS defined conditionally below */
 
 /* The LLVM product name and version */
-#define BACKEND_PACKAGE_STRING "LLVM 15.0.4"
+#define BACKEND_PACKAGE_STRING "LLVM 15.0.5"
 
 /* Linker version detected at compile time. */
 /* #undef HOST_LINK_VERSION */

diff  --git a/utils/bazel/llvm-project-overlay/lld/BUILD.bazel 
b/utils/bazel/llvm-project-overlay/lld/BUILD.bazel
index e3a8c98ffa228..b4e7f5ccbdc4e 100644
--- a/utils/bazel/llvm-project-overlay/lld/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/lld/BUILD.bazel
@@ -13,7 +13,7 @@ package(
 genrule(
 name = "config_version_gen",
 outs = ["include/lld/Common/Version.inc"],
-cmd = "echo '#define LLD_VERSION_STRING \"15.0.4\"' > $@",
+cmd = "echo '#define LLD_VERSION_STRING \"15.0.5\"' > $@",
 )
 
 genrule(

diff  --git 
a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h 
b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
index 7a86202e8e0d5..16ffcbf0d2f6a 100644
--- a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
+++ b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
@@ -80,10 +80,10 @@
 #define LLVM_VERSION_MINOR 0
 
 /* Patch version of the LLVM