[clang] 2bb5954 - clang: Respect function address space for __builtin_function_start
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 21 05:27:32 PST 2022
Author: Matt Arsenault
Date: 2022-12-21T08:27:24-05:00
New Revision: 2bb59549e11fdb1d6b6c4e68f4572783f414d67f
URL: https://github.com/llvm/llvm-project/commit/2bb59549e11fdb1d6b6c4e68f4572783f414d67f
DIFF: https://github.com/llvm/llvm-project/commit/2bb59549e11fdb1d6b6c4e68f4572783f414d67f.diff
LOG: clang: Respect function address space for __builtin_function_start
Fixes assertion.
Added:
clang/test/CodeGen/avr/builtin-function-start.c
Modified:
clang/lib/CodeGen/CodeGenModule.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index ac71346de2987..fcb60e3b4e705 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -4170,8 +4170,9 @@ llvm::Constant *CodeGenModule::GetFunctionStart(const ValueDecl *Decl) {
llvm::GlobalValue *F =
cast<llvm::GlobalValue>(GetAddrOfFunction(Decl)->stripPointerCasts());
- return llvm::ConstantExpr::getBitCast(llvm::NoCFIValue::get(F),
- llvm::Type::getInt8PtrTy(VMContext));
+ return llvm::ConstantExpr::getBitCast(
+ llvm::NoCFIValue::get(F),
+ llvm::Type::getInt8PtrTy(VMContext, F->getAddressSpace()));
}
static const FunctionDecl *
diff --git a/clang/test/CodeGen/avr/builtin-function-start.c b/clang/test/CodeGen/avr/builtin-function-start.c
new file mode 100644
index 0000000000000..293c8061299d7
--- /dev/null
+++ b/clang/test/CodeGen/avr/builtin-function-start.c
@@ -0,0 +1,13 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --check-globals
+// RUN: %clang_cc1 -triple avr-- -emit-llvm -o - %s | FileCheck %s
+
+//.
+// CHECK: @e = global ptr addrspacecast (ptr addrspace(1) no_cfi @a to ptr), align 1
+//.
+// CHECK-LABEL: define {{[^@]+}}@a
+// CHECK-SAME: () addrspace(1) #[[ATTR0:[0-9]+]] {
+// CHECK-NEXT: entry:
+// CHECK-NEXT: ret void
+//
+void a(void) {}
+const void *e = __builtin_function_start(a);
More information about the cfe-commits
mailing list