[libc-commits] [libc] [libc] Add _Returns_twice to C++ code (PR #153602)
William Huynh via libc-commits
libc-commits at lists.llvm.org
Mon Aug 18 03:52:27 PDT 2025
https://github.com/saturn691 updated https://github.com/llvm/llvm-project/pull/153602
>From c908ee044cf0a7be6a1dd60333f6fcda73c5ec77 Mon Sep 17 00:00:00 2001
From: William Huynh <William.Huynh at arm.com>
Date: Thu, 14 Aug 2025 16:39:47 +0100
Subject: [PATCH 1/2] [libc] Add _Returns_twice to C++ code
Fixes issue with <csetjmp> which requires _Returns_twice but in
C++ mode
---
libc/include/__llvm-libc-common.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libc/include/__llvm-libc-common.h b/libc/include/__llvm-libc-common.h
index c6fd33a55532c..b376b05df1678 100644
--- a/libc/include/__llvm-libc-common.h
+++ b/libc/include/__llvm-libc-common.h
@@ -47,6 +47,9 @@
#define __NOEXCEPT throw()
#endif
+#undef _Returns_twice
+#define _Returns_twice [[gnu::returns_twice]]
+
// This macro serves as a generic cast implementation for use in both C and C++,
// similar to `__BIONIC_CAST` in Android.
#undef __LLVM_LIBC_CAST
>From 8e7da2c83af92378183588a47485726a08fb23a7 Mon Sep 17 00:00:00 2001
From: William Huynh <William.Huynh at arm.com>
Date: Mon, 18 Aug 2025 11:52:15 +0100
Subject: [PATCH 2/2] Add suggestion from @petrhoesk
---
libc/include/__llvm-libc-common.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libc/include/__llvm-libc-common.h b/libc/include/__llvm-libc-common.h
index b376b05df1678..1fe3f4d2aea9c 100644
--- a/libc/include/__llvm-libc-common.h
+++ b/libc/include/__llvm-libc-common.h
@@ -48,7 +48,11 @@
#endif
#undef _Returns_twice
+#if __cplusplus >= 201103L
#define _Returns_twice [[gnu::returns_twice]]
+#else
+#define _Returns_twice __attribute__((returns_twice))
+#endif
// This macro serves as a generic cast implementation for use in both C and C++,
// similar to `__BIONIC_CAST` in Android.
More information about the libc-commits
mailing list