[clang] [clang] fix error: cannot compile this l-value expression yet (PR #187755)
Joe Kirchoff via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 20 14:52:13 PDT 2026
https://github.com/Rinn updated https://github.com/llvm/llvm-project/pull/187755
>From bcaef3fd13529ca97e8babb931c56a640191d7ca Mon Sep 17 00:00:00 2001
From: Joe Kirchoff <joe.kirchoff at epicgames.com>
Date: Fri, 20 Mar 2026 10:04:55 -0700
Subject: [PATCH 1/3] [clang] fix error cannot compile this l-value expression
yet
Prior to this clang will crash when __builtin_FUNCTION is passed to decltype() to be used as a template typename
---
clang/lib/AST/Expr.cpp | 2 +-
clang/test/CodeGenCXX/builtin_FUNCTION.cpp | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 185e887fb05c3..fa606eab5aa4e 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -2255,7 +2255,7 @@ SourceLocExpr::SourceLocExpr(const ASTContext &Ctx, SourceLocIdentKind Kind,
SourceLocExprBits.Kind = llvm::to_underlying(Kind);
// In dependent contexts, function names may change.
setDependence(MayBeDependent(Kind) && ParentContext->isDependentContext()
- ? ExprDependence::Value
+ ? ExprDependence::ValueInstantiation
: ExprDependence::None);
}
diff --git a/clang/test/CodeGenCXX/builtin_FUNCTION.cpp b/clang/test/CodeGenCXX/builtin_FUNCTION.cpp
index 44821b92d33fe..02d85239ec554 100644
--- a/clang/test/CodeGenCXX/builtin_FUNCTION.cpp
+++ b/clang/test/CodeGenCXX/builtin_FUNCTION.cpp
@@ -39,3 +39,20 @@ void do_default_arg_test() {
}
} // namespace test_func
+
+namespace test_decltype_template {
+
+template <typename> void template_func() {}
+
+// CHECK: define linkonce_odr {{(dso_local )?}}void @_ZN22test_decltype_template21use_decltype_templateIiEEvv(
+// CHECK: call void @_ZN22test_decltype_template13template_funcIPKcEEvv()
+template <typename> void use_decltype_template() {
+ template_func<decltype(__builtin_FUNCTION())>();
+}
+
+// CHECK: define linkonce_odr {{(dso_local )?}}void @_ZN22test_decltype_template13template_funcIPKcEEvv()
+void do_decltype_template_test() {
+ use_decltype_template<int>();
+}
+
+} // namespace test_decltype_template
>From 714e2eebb9d514276176f99ff1fc98b9be040173 Mon Sep 17 00:00:00 2001
From: Joe Kirchoff <joe.kirchoff at epicgames.com>
Date: Fri, 20 Mar 2026 14:49:37 -0700
Subject: [PATCH 2/3] Update ReleaseNotes.rst
---
clang/docs/ReleaseNotes.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 45234c316eba8..29afb69abf36f 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -402,6 +402,7 @@ Miscellaneous Clang Crashes Fixed
- Fixed a crash when subscripting a vector type with large unsigned integer values. (#GH180563)
- Fixed a crash when evaluating ``__is_bitwise_cloneable`` on invalid record types. (#GH183707)
- Fixed an assertion failure when casting a function pointer with a target with a non-default program address space. (#GH186210)
+- Fixed a crash when ``__builtin_FUNCTION()`` is passed to ``decltype()`` when used as a template type argument. (#GH167433)
OpenACC Specific Changes
------------------------
>From 96bbc8d560450995ce8d0a1adfd956976e4b11cb Mon Sep 17 00:00:00 2001
From: Joe Kirchoff <joe.kirchoff at epicgames.com>
Date: Fri, 20 Mar 2026 14:51:57 -0700
Subject: [PATCH 3/3] Update ReleaseNotes.rst
---
clang/docs/ReleaseNotes.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 29afb69abf36f..b13171f7ecafc 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -402,7 +402,7 @@ Miscellaneous Clang Crashes Fixed
- Fixed a crash when subscripting a vector type with large unsigned integer values. (#GH180563)
- Fixed a crash when evaluating ``__is_bitwise_cloneable`` on invalid record types. (#GH183707)
- Fixed an assertion failure when casting a function pointer with a target with a non-default program address space. (#GH186210)
-- Fixed a crash when ``__builtin_FUNCTION()`` is passed to ``decltype()`` when used as a template type argument. (#GH167433)
+- Fixed a crash when ``decltype(__builtin_FUNCTION())`` is used as a template type argument. (#GH167433)
OpenACC Specific Changes
------------------------
More information about the cfe-commits
mailing list