[libc-commits] [libc] [libc] s/in_addr/struct in_addr/ (PR #196937)

Pavel Labath via libc-commits libc-commits at lists.llvm.org
Mon May 11 06:04:26 PDT 2026


https://github.com/labath updated https://github.com/llvm/llvm-project/pull/196937

>From e2e634b719ceb30acf8f80f6b0170b889b065e92 Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Mon, 11 May 2026 12:31:21 +0000
Subject: [PATCH 1/2] [libc] s/in_addr/struct in_addr/

in_addr should be a regular tagged struct, not a
typedef-of-an-anonymous-struct. C++ doesn't care about this as much as C
does, but even in C++ one cannot use `struct Foo` syntax to refer to a
struct if it was not declared that way.
---
 libc/include/CMakeLists.txt                          |  2 +-
 libc/include/arpa/inet.yaml                          |  4 ++--
 libc/include/llvm-libc-types/CMakeLists.txt          |  2 +-
 .../llvm-libc-types/{in_addr.h => struct_in_addr.h}  | 12 ++++++------
 libc/src/arpa/inet/CMakeLists.txt                    |  4 ++--
 libc/src/arpa/inet/inet_addr.cpp                     |  4 ++--
 libc/src/arpa/inet/inet_aton.cpp                     |  2 +-
 libc/src/arpa/inet/inet_aton.h                       |  4 ++--
 libc/test/src/arpa/inet/inet_aton_test.cpp           |  2 +-
 9 files changed, 18 insertions(+), 18 deletions(-)
 rename libc/include/llvm-libc-types/{in_addr.h => struct_in_addr.h} (62%)

diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt
index fac2b40ca45a8..e5f96ab19d9f1 100644
--- a/libc/include/CMakeLists.txt
+++ b/libc/include/CMakeLists.txt
@@ -205,8 +205,8 @@ add_header_macro(
   DEPENDS
     .llvm_libc_common_h
     .inttypes
-    .llvm-libc-types.in_addr
     .llvm-libc-types.in_addr_t
+    .llvm-libc-types.struct_in_addr
 )
 
 file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/netinet)
diff --git a/libc/include/arpa/inet.yaml b/libc/include/arpa/inet.yaml
index a0601d700d1b4..e6016152a1466 100644
--- a/libc/include/arpa/inet.yaml
+++ b/libc/include/arpa/inet.yaml
@@ -3,8 +3,8 @@ standards:
   - posix
 macros: []
 types:
-  - type_name: in_addr
   - type_name: in_addr_t
+  - type_name: struct_in_addr
 enums: []
 objects: []
 functions:
@@ -32,7 +32,7 @@ functions:
     return_type: int
     arguments:
       - type: const char *
-      - type: in_addr *
+      - type: struct in_addr *
   - name: ntohl
     standards:
       - POSIX
diff --git a/libc/include/llvm-libc-types/CMakeLists.txt b/libc/include/llvm-libc-types/CMakeLists.txt
index ad294279e0f03..e967b43d81df0 100644
--- a/libc/include/llvm-libc-types/CMakeLists.txt
+++ b/libc/include/llvm-libc-types/CMakeLists.txt
@@ -57,7 +57,7 @@ add_header(gid_t HDR gid_t.h)
 add_header(uid_t HDR uid_t.h)
 add_header(imaxdiv_t HDR imaxdiv_t.h)
 add_header(in_addr_t HDR in_addr_t.h)
-add_header(in_addr HDR in_addr.h DEPENDS .in_addr_t)
+add_header(struct_in_addr HDR struct_in_addr.h DEPENDS .in_addr_t)
 add_header(ino_t HDR ino_t.h)
 add_header(key_t HDR key_t.h)
 add_header(mbstate_t HDR mbstate_t.h)
diff --git a/libc/include/llvm-libc-types/in_addr.h b/libc/include/llvm-libc-types/struct_in_addr.h
similarity index 62%
rename from libc/include/llvm-libc-types/in_addr.h
rename to libc/include/llvm-libc-types/struct_in_addr.h
index ab42142e323b2..2ff5694dfb173 100644
--- a/libc/include/llvm-libc-types/in_addr.h
+++ b/libc/include/llvm-libc-types/struct_in_addr.h
@@ -1,4 +1,4 @@
-//===-- Definition of in_addr type ----------------------------------------===//
+//===-- Definition of struct in_addr --------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,13 +6,13 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_TYPES_IN_ADDR_H
-#define LLVM_LIBC_TYPES_IN_ADDR_H
+#ifndef LLVM_LIBC_TYPES_STRUCT_IN_ADDR_H
+#define LLVM_LIBC_TYPES_STRUCT_IN_ADDR_H
 
 #include "in_addr_t.h"
 
-typedef struct {
+struct in_addr {
   in_addr_t s_addr;
-} in_addr;
+};
 
-#endif // LLVM_LIBC_TYPES_IN_ADDR_H
+#endif // LLVM_LIBC_TYPES_STRUCT_IN_ADDR_H
diff --git a/libc/src/arpa/inet/CMakeLists.txt b/libc/src/arpa/inet/CMakeLists.txt
index 3b3d0f43b8586..7b421c30e07fa 100644
--- a/libc/src/arpa/inet/CMakeLists.txt
+++ b/libc/src/arpa/inet/CMakeLists.txt
@@ -30,7 +30,7 @@ add_entrypoint_object(
     inet_aton.h
   DEPENDS
     libc.include.arpa_inet
-    libc.include.llvm-libc-types.in_addr
+    libc.include.llvm-libc-types.struct_in_addr
     libc.src.__support.common
     libc.src.__support.str_to_integer
 )
@@ -44,7 +44,7 @@ add_entrypoint_object(
   DEPENDS
     libc.include.arpa_inet
     libc.include.llvm-libc-macros.netinet_in_macros
-    libc.include.llvm-libc-types.in_addr
+    libc.include.llvm-libc-types.struct_in_addr
     libc.include.llvm-libc-types.in_addr_t
     libc.src.__support.common
     libc.src.arpa.inet.inet_aton
diff --git a/libc/src/arpa/inet/inet_addr.cpp b/libc/src/arpa/inet/inet_addr.cpp
index 8ce88c0df8aec..7548996ff6526 100644
--- a/libc/src/arpa/inet/inet_addr.cpp
+++ b/libc/src/arpa/inet/inet_addr.cpp
@@ -8,7 +8,7 @@
 
 #include "src/arpa/inet/inet_addr.h"
 #include "include/llvm-libc-macros/netinet-in-macros.h"
-#include "include/llvm-libc-types/in_addr.h"
+#include "include/llvm-libc-types/struct_in_addr.h"
 #include "include/llvm-libc-types/in_addr_t.h"
 #include "src/__support/common.h"
 #include "src/arpa/inet/inet_aton.h"
@@ -16,7 +16,7 @@
 namespace LIBC_NAMESPACE_DECL {
 
 LLVM_LIBC_FUNCTION(in_addr_t, inet_addr, (const char *cp)) {
-  in_addr addr;
+  struct in_addr addr;
   return inet_aton(cp, &addr) ? addr.s_addr : INADDR_NONE;
 }
 
diff --git a/libc/src/arpa/inet/inet_aton.cpp b/libc/src/arpa/inet/inet_aton.cpp
index 71419cb9a00c8..c7f002ec393aa 100644
--- a/libc/src/arpa/inet/inet_aton.cpp
+++ b/libc/src/arpa/inet/inet_aton.cpp
@@ -13,7 +13,7 @@
 
 namespace LIBC_NAMESPACE_DECL {
 
-LLVM_LIBC_FUNCTION(int, inet_aton, (const char *cp, in_addr *inp)) {
+LLVM_LIBC_FUNCTION(int, inet_aton, (const char *cp, struct in_addr *inp)) {
   constexpr int IPV4_MAX_DOT_NUM = 3;
   unsigned long parts[IPV4_MAX_DOT_NUM + 1] = {0};
   int dot_num = 0;
diff --git a/libc/src/arpa/inet/inet_aton.h b/libc/src/arpa/inet/inet_aton.h
index ea387d1f6b2f6..5d97ad5547016 100644
--- a/libc/src/arpa/inet/inet_aton.h
+++ b/libc/src/arpa/inet/inet_aton.h
@@ -9,12 +9,12 @@
 #ifndef LLVM_LIBC_SRC_ARPA_INET_INET_ATON_H
 #define LLVM_LIBC_SRC_ARPA_INET_INET_ATON_H
 
-#include "include/llvm-libc-types/in_addr.h"
+#include "include/llvm-libc-types/struct_in_addr.h"
 #include "src/__support/macros/config.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
-int inet_aton(const char *cp, in_addr *inp);
+int inet_aton(const char *cp, struct in_addr *inp);
 
 } // namespace LIBC_NAMESPACE_DECL
 
diff --git a/libc/test/src/arpa/inet/inet_aton_test.cpp b/libc/test/src/arpa/inet/inet_aton_test.cpp
index c9c97870e0dff..7757ba7ad4d07 100644
--- a/libc/test/src/arpa/inet/inet_aton_test.cpp
+++ b/libc/test/src/arpa/inet/inet_aton_test.cpp
@@ -13,7 +13,7 @@
 namespace LIBC_NAMESPACE_DECL {
 
 TEST(LlvmLibcInetAton, ValidTest) {
-  in_addr a;
+  struct in_addr a;
 
   // a.b.c.d
   a.s_addr = 0;

>From 0c4527df822394971b0f53d70365638c81eb6347 Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Mon, 11 May 2026 13:04:08 +0000
Subject: [PATCH 2/2] format

---
 libc/src/arpa/inet/inet_addr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libc/src/arpa/inet/inet_addr.cpp b/libc/src/arpa/inet/inet_addr.cpp
index 7548996ff6526..00a4a5ad22ecd 100644
--- a/libc/src/arpa/inet/inet_addr.cpp
+++ b/libc/src/arpa/inet/inet_addr.cpp
@@ -8,8 +8,8 @@
 
 #include "src/arpa/inet/inet_addr.h"
 #include "include/llvm-libc-macros/netinet-in-macros.h"
-#include "include/llvm-libc-types/struct_in_addr.h"
 #include "include/llvm-libc-types/in_addr_t.h"
+#include "include/llvm-libc-types/struct_in_addr.h"
 #include "src/__support/common.h"
 #include "src/arpa/inet/inet_aton.h"
 



More information about the libc-commits mailing list