Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc] Added transitive bindings for OffsetType #87397

Merged
merged 6 commits into from
Apr 3, 2024

Conversation

Sh0g0-1758
Copy link
Member

Adding OffTType to fcntl.h and stdio.h 's Macro lists in libc/spec/posix.td as mentioned here: #87266

@Sh0g0-1758
Copy link
Member Author

cc: @nickdesaulniers

@nickdesaulniers nickdesaulniers self-requested a review April 2, 2024 19:25
@nickdesaulniers
Copy link
Member

nickdesaulniers commented Apr 2, 2024

@michaelrj-google @lntue , with this change checked out locally (gh pr checkout 87397) I hit the same build issues that necessitated #87266. I thought #include <stdio.h> in full build mode was supposed to include our generated stdio.h? Or am I misunderstanding what is the point of Types in HeaderSpecs?

Perhaps instead, libc/include/stdio.h.def and libc/include/fcntl.h.def need to be modified?

In file included from /android0/llvm-project/libc/src/stdio/generic/ftello.cpp:9:
/android0/llvm-project/libc/src/stdio/ftello.h:16:1: error: unknown type name 'off_t'
   16 | off_t ftello(::FILE *f);
      | ^
In file included from /android0/llvm-project/libc/src/stdio/generic/fseeko.cpp:9:
/android0/llvm-project/libc/src/stdio/fseeko.h:16:28: error: unknown type name 'off_t'
   16 | int fseeko(::FILE *stream, off_t offset, int whence);
      |                            ^

@nickdesaulniers
Copy link
Member

nickdesaulniers commented Apr 2, 2024

Ah, libc/config/linux/api.td!!!

diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td
index eb5ed8089850..6ae39f385c07 100644
--- a/libc/config/linux/api.td
+++ b/libc/config/linux/api.td
@@ -49,7 +49,7 @@ def CTypeAPI : PublicAPI<"ctype.h"> {
 }
 
 def FCntlAPI : PublicAPI<"fcntl.h"> {
-  let Types = ["mode_t"];
+  let Types = ["mode_t", "off_t"];
 }
 
 def IntTypesAPI : PublicAPI<"inttypes.h"> {
@@ -77,7 +77,7 @@ def StdIOAPI : PublicAPI<"stdio.h"> {
     SimpleMacroDef<"_IOLBF", "1">,
     SimpleMacroDef<"_IONBF", "2">,
   ];
-  let Types = ["size_t", "FILE", "cookie_io_functions_t"];
+  let Types = ["size_t", "FILE", "cookie_io_functions_t", "off_t"];
 }
 
 def StdlibAPI : PublicAPI<"stdlib.h"> {

(but we should start putting these on their own line)

I wonder if libc/include/CMakeLists.txt should also add DEPENDS? Seems not necessary to fix the build, but...

@lntue
Copy link
Contributor

lntue commented Apr 2, 2024

@michaelrj-google @lntue , with this change checked out locally (gh pr checkout 87397) I hit the same build issues that necessitated #87266. I thought #include <stdio.h> in full build mode was supposed to include our generated stdio.h? Or am I misunderstanding what is the point of Types in HeaderSpecs?

Perhaps instead, libc/include/stdio.h.def and libc/include/fcntl.h.def need to be modified?

In file included from /android0/llvm-project/libc/src/stdio/generic/ftello.cpp:9:
/android0/llvm-project/libc/src/stdio/ftello.h:16:1: error: unknown type name 'off_t'
   16 | off_t ftello(::FILE *f);
      | ^
In file included from /android0/llvm-project/libc/src/stdio/generic/fseeko.cpp:9:
/android0/llvm-project/libc/src/stdio/fseeko.h:16:28: error: unknown type name 'off_t'
   16 | int fseeko(::FILE *stream, off_t offset, int whence);
      |                            ^

So I think

Ah, libc/config/linux/api.td!!!

diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td
index eb5ed8089850..6ae39f385c07 100644
--- a/libc/config/linux/api.td
+++ b/libc/config/linux/api.td
@@ -49,7 +49,7 @@ def CTypeAPI : PublicAPI<"ctype.h"> {
 }
 
 def FCntlAPI : PublicAPI<"fcntl.h"> {
-  let Types = ["mode_t"];
+  let Types = ["mode_t", "off_t"];
 }
 
 def IntTypesAPI : PublicAPI<"inttypes.h"> {
@@ -77,7 +77,7 @@ def StdIOAPI : PublicAPI<"stdio.h"> {
     SimpleMacroDef<"_IOLBF", "1">,
     SimpleMacroDef<"_IONBF", "2">,
   ];
-  let Types = ["size_t", "FILE", "cookie_io_functions_t"];
+  let Types = ["size_t", "FILE", "cookie_io_functions_t", "off_t"];
 }
 
 def StdlibAPI : PublicAPI<"stdlib.h"> {

(but we should start putting these on their own line)

I wonder if libc/include/CMakeLists.txt should also add DEPENDS? Seems not necessary to fix the build, but...

Look like you also need to add those types to https://github.com/llvm/llvm-project/blob/main/libc/config/linux/api.td#L80 for it to automatically generate the includes.

@Sh0g0-1758
Copy link
Member Author

Sh0g0-1758 commented Apr 2, 2024

Made the changes. Any clarification on the point of Types in HeaderSpecs though?

@michaelrj-google
Copy link
Contributor

For the moment, defining the types in the HeaderSpecs is the correct way to do it. In future, we're planning on rewriting headergen, and that might involve moving types and macros out of these spec files and into the headers directly.

@nickdesaulniers
Copy link
Member

(but we should start putting these on their own line)

@Sh0g0-1758 please make that change.

For the moment, defining the types in the HeaderSpecs is the correct way to do it.

@michaelrj-google is that in addition to changes to libc/config/linux/api.td? Do we we need to modify other api.td files? Seems like modifying the api.td files is necessary to fix the build; so I'm not sure still what the point of the HeaderSpecs in libc/spec/posix.td even is? Feels like boilerplate. What am I missing? (Perhaps I should go read the headergen sources).

I wonder if libc/include/CMakeLists.txt should also add DEPENDS?

@michaelrj-google do we also need something like:

diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt
index 4203f0bc901b..02c7dc8fbc0b 100644
--- a/libc/include/CMakeLists.txt
+++ b/libc/include/CMakeLists.txt
@@ -41,9 +41,10 @@ add_gen_header(
   DEF_FILE fcntl.h.def
   GEN_HDR fcntl.h
   DEPENDS
-    .llvm_libc_common_h
     .llvm-libc-macros.fcntl_macros
     .llvm-libc-types.mode_t
+    .llvm-libc-types.off_t
+    .llvm_libc_common_h
 )
 
 add_gen_header(
@@ -264,13 +265,14 @@ add_gen_header(
   DEF_FILE stdio.h.def
   GEN_HDR stdio.h
   DEPENDS
-    .llvm_libc_common_h
     .llvm-libc-macros.file_seek_macros
     .llvm-libc-macros.stdio_macros
-    .llvm-libc-types.size_t
-    .llvm-libc-types.ssize_t
     .llvm-libc-types.FILE
     .llvm-libc-types.cookie_io_functions_t
+    .llvm-libc-types.off_t
+    .llvm-libc-types.size_t
+    .llvm-libc-types.ssize_t
+    .llvm_libc_common_h
 )
 
 add_gen_header(

(which again, feels like boilerplate)

@michaelrj-google
Copy link
Contributor

Yes, you also still need to modify api.td if you want to add a type. You can think of that as being the equivalent of entrypoints.txt for types/macros. It defines the rules for the specific platform. If you want to look at the parsing code for headergen then look at https://github.com/llvm/llvm-project/blob/main/libc/utils/LibcTableGenUtil/APIIndexer.cpp

Yes you also need to add the dependency in cmake, that's what tells the build system which type headers in llvm-libc-types need to be copied to the same directory as the generated headers. If nothing has a dependency on a type header it might not be copied, causing trouble for clean builds. In this case you won't notice a difference since these headers are included in other places, but it is important to do.

@Sh0g0-1758
Copy link
Member Author

Sh0g0-1758 commented Apr 3, 2024

@nickdesaulniers, made the required changes. Was confused by what you meant by on each line since a lot of header files in api.td currently have their types in the same line.

And I have pushed changes in CMakeLists.txt also as suggested by michael.

@nickdesaulniers
Copy link
Member

Yes, you also still need to modify api.td if you want to add a type.

In that case, we'll also need similar changes to libc/config/gpu/api.td and libc/config/baremetal/api.td.

@llvmbot llvmbot added the libc label Apr 3, 2024
@llvmbot
Copy link
Member

llvmbot commented Apr 3, 2024

@llvm/pr-subscribers-libc

Author: Shourya Goel (Sh0g0-1758)

Changes

Adding OffTType to fcntl.h and stdio.h 's Macro lists in libc/spec/posix.td as mentioned here: #87266


Full diff: https://github.com/llvm/llvm-project/pull/87397.diff

7 Files Affected:

  • (modified) libc/config/baremetal/api.td (+4-1)
  • (modified) libc/config/gpu/api.td (+5-1)
  • (modified) libc/config/linux/api.td (+10-2)
  • (modified) libc/include/CMakeLists.txt (+6-4)
  • (modified) libc/spec/posix.td (+5-2)
  • (modified) libc/src/stdio/fseeko.h (-1)
  • (modified) libc/src/stdio/ftello.h (-1)
diff --git a/libc/config/baremetal/api.td b/libc/config/baremetal/api.td
index 25aa06aacb642e..690edbda1311fe 100644
--- a/libc/config/baremetal/api.td
+++ b/libc/config/baremetal/api.td
@@ -57,7 +57,10 @@ def MathAPI : PublicAPI<"math.h"> {
 }
 
 def StdIOAPI : PublicAPI<"stdio.h"> {
-  let Types = ["size_t"];
+  let Types = [
+    "size_t",
+    "off_t",
+  ];
 }
 
 def StdlibAPI : PublicAPI<"stdlib.h"> {
diff --git a/libc/config/gpu/api.td b/libc/config/gpu/api.td
index adaf5bfd747ac7..523ad49ffa3fd4 100644
--- a/libc/config/gpu/api.td
+++ b/libc/config/gpu/api.td
@@ -64,7 +64,11 @@ def StdIOAPI : PublicAPI<"stdio.h"> {
     SimpleMacroDef<"_IOLBF", "1">,
     SimpleMacroDef<"_IONBF", "2">,
   ];
-  let Types = ["size_t", "FILE"];
+  let Types = [
+    "FILE",
+    "off_t",
+    "size_t",
+  ];
 }
 
 def IntTypesAPI : PublicAPI<"inttypes.h"> {
diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td
index eb5ed8089850e4..9964971f191b75 100644
--- a/libc/config/linux/api.td
+++ b/libc/config/linux/api.td
@@ -49,7 +49,10 @@ def CTypeAPI : PublicAPI<"ctype.h"> {
 }
 
 def FCntlAPI : PublicAPI<"fcntl.h"> {
-  let Types = ["mode_t"];
+  let Types = [
+    "mode_t",
+    "off_t",
+  ];
 }
 
 def IntTypesAPI : PublicAPI<"inttypes.h"> {
@@ -77,7 +80,12 @@ def StdIOAPI : PublicAPI<"stdio.h"> {
     SimpleMacroDef<"_IOLBF", "1">,
     SimpleMacroDef<"_IONBF", "2">,
   ];
-  let Types = ["size_t", "FILE", "cookie_io_functions_t"];
+  let Types = [
+    "FILE",
+    "cookie_io_functions_t",
+    "off_t",
+    "size_t",
+  ];
 }
 
 def StdlibAPI : PublicAPI<"stdlib.h"> {
diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt
index 4203f0bc901b22..02c7dc8fbc0b33 100644
--- a/libc/include/CMakeLists.txt
+++ b/libc/include/CMakeLists.txt
@@ -41,9 +41,10 @@ add_gen_header(
   DEF_FILE fcntl.h.def
   GEN_HDR fcntl.h
   DEPENDS
-    .llvm_libc_common_h
     .llvm-libc-macros.fcntl_macros
     .llvm-libc-types.mode_t
+    .llvm-libc-types.off_t
+    .llvm_libc_common_h
 )
 
 add_gen_header(
@@ -264,13 +265,14 @@ add_gen_header(
   DEF_FILE stdio.h.def
   GEN_HDR stdio.h
   DEPENDS
-    .llvm_libc_common_h
     .llvm-libc-macros.file_seek_macros
     .llvm-libc-macros.stdio_macros
-    .llvm-libc-types.size_t
-    .llvm-libc-types.ssize_t
     .llvm-libc-types.FILE
     .llvm-libc-types.cookie_io_functions_t
+    .llvm-libc-types.off_t
+    .llvm-libc-types.size_t
+    .llvm-libc-types.ssize_t
+    .llvm_libc_common_h
 )
 
 add_gen_header(
diff --git a/libc/spec/posix.td b/libc/spec/posix.td
index cfa8d3afedde3f..45f7ecfe84e98e 100644
--- a/libc/spec/posix.td
+++ b/libc/spec/posix.td
@@ -210,7 +210,10 @@ def POSIX : StandardSpec<"POSIX"> {
   HeaderSpec FCntl = HeaderSpec<
     "fcntl.h",
     [], // Macros
-    [ModeTType],
+    [
+        ModeTType,
+        OffTType,
+    ],
     [], // Enumerations
     [
       FunctionSpec<
@@ -1180,7 +1183,7 @@ def POSIX : StandardSpec<"POSIX"> {
   HeaderSpec StdIO = HeaderSpec<
       "stdio.h",
       [], // Macros
-      [], // Types
+      [OffTType], // Types
       [], // Enumerations
       [
           FunctionSpec<
diff --git a/libc/src/stdio/fseeko.h b/libc/src/stdio/fseeko.h
index 3202ed2f97d0ef..77fb41215c318f 100644
--- a/libc/src/stdio/fseeko.h
+++ b/libc/src/stdio/fseeko.h
@@ -10,7 +10,6 @@
 #define LLVM_LIBC_SRC_STDIO_FSEEKO_H
 
 #include <stdio.h>
-#include <unistd.h>
 
 namespace LIBC_NAMESPACE {
 
diff --git a/libc/src/stdio/ftello.h b/libc/src/stdio/ftello.h
index 0fdf13ab6bdbcd..5ab17f9244a5ad 100644
--- a/libc/src/stdio/ftello.h
+++ b/libc/src/stdio/ftello.h
@@ -10,7 +10,6 @@
 #define LLVM_LIBC_SRC_STDIO_FTELLO_H
 
 #include <stdio.h>
-#include <unistd.h>
 
 namespace LIBC_NAMESPACE {
 

Copy link
Member

@nickdesaulniers nickdesaulniers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM; thanks for the patch! 🐰 🌵

@Sh0g0-1758
Copy link
Member Author

Ah :) Any context for the emojis?

@Sh0g0-1758
Copy link
Member Author

@nickdesaulniers, I would be needing you to land this for me.

@nickdesaulniers
Copy link
Member

Any context for the emojis?

Nope, just me being silly again.

I would be needing you to land this for me.

Ack. Thanks for the patch!

@nickdesaulniers nickdesaulniers merged commit 3ee93f4 into llvm:main Apr 3, 2024
5 checks passed
@gulfemsavrun
Copy link
Contributor

gulfemsavrun commented Apr 4, 2024

This patch broke our Clang toolchain builders.

FAILED: /b/s/w/ir/x/w/llvm_build/include/armv6m-unknown-eabi/stdio.h 
cd /b/s/w/ir/x/w/llvm-llvm-project/libc/include && /b/s/w/ir/x/w/llvm_build/bin/libc-hdrgen -o /b/s/w/ir/x/w/llvm_build/include/armv6m-unknown-eabi/stdio.h --header stdio.h --def /b/s/w/ir/x/w/llvm-llvm-project/libc/include/stdio.h.def -I /b/s/w/ir/x/w/llvm-llvm-project/libc --e=__assert_fail --e=isalnum --e=isalpha --e=isascii --e=isblank --e=iscntrl --e=isdigit --e=isgraph --e=islower --e=isprint --e=ispunct --e=isspace --e=isupper --e=isxdigit --e=toascii --e=tolower --e=toupper --e=__stack_chk_fail --e=errno --e=bcmp --e=bcopy --e=bzero --e=index --e=memccpy --e=memchr --e=memcmp --e=memcpy --e=memmem --e=memmove --e=mempcpy --e=memrchr --e=memset --e=memset_explicit --e=rindex --e=stpcpy --e=stpncpy --e=strcasecmp --e=strcasestr --e=strcat --e=strchr --e=strchrnul --e=strcmp --e=strcoll --e=strcpy --e=strcspn --e=strerror --e=strerror_r --e=strlcat --e=strlcpy --e=strlen --e=strncasecmp --e=strncat --e=strncmp --e=strncpy --e=strnlen --e=strpbrk --e=strrchr --e=strsep --e=strspn --e=strstr --e=strtok --e=strtok_r --e=strxfrm --e=imaxabs --e=imaxdiv --e=strtoimax --e=strtoumax --e=remove --e=sprintf --e=snprintf --e=vsprintf --e=vsnprintf --e=stdc_leading_zeros_uc --e=stdc_leading_zeros_us --e=stdc_leading_zeros_ui --e=stdc_leading_zeros_ul --e=stdc_leading_zeros_ull --e=stdc_leading_ones_uc --e=stdc_leading_ones_us --e=stdc_leading_ones_ui --e=stdc_leading_ones_ul --e=stdc_leading_ones_ull --e=stdc_trailing_zeros_uc --e=stdc_trailing_zeros_us --e=stdc_trailing_zeros_ui --e=stdc_trailing_zeros_ul --e=stdc_trailing_zeros_ull --e=stdc_trailing_ones_uc --e=stdc_trailing_ones_us --e=stdc_trailing_ones_ui --e=stdc_trailing_ones_ul --e=stdc_trailing_ones_ull --e=stdc_first_leading_zero_uc --e=stdc_first_leading_zero_us --e=stdc_first_leading_zero_ui --e=stdc_first_leading_zero_ul --e=stdc_first_leading_zero_ull --e=stdc_first_leading_one_uc --e=stdc_first_leading_one_us --e=stdc_first_leading_one_ui --e=stdc_first_leading_one_ul --e=stdc_first_leading_one_ull --e=stdc_first_trailing_zero_uc --e=stdc_first_trailing_zero_us --e=stdc_first_trailing_zero_ui --e=stdc_first_trailing_zero_ul --e=stdc_first_trailing_zero_ull --e=stdc_first_trailing_one_uc --e=stdc_first_trailing_one_us --e=stdc_first_trailing_one_ui --e=stdc_first_trailing_one_ul --e=stdc_first_trailing_one_ull --e=stdc_count_zeros_uc --e=stdc_count_zeros_us --e=stdc_count_zeros_ui --e=stdc_count_zeros_ul --e=stdc_count_zeros_ull --e=stdc_count_ones_uc --e=stdc_count_ones_us --e=stdc_count_ones_ui --e=stdc_count_ones_ul --e=stdc_count_ones_ull --e=stdc_has_single_bit_uc --e=stdc_has_single_bit_us --e=stdc_has_single_bit_ui --e=stdc_has_single_bit_ul --e=stdc_has_single_bit_ull --e=stdc_bit_width_uc --e=stdc_bit_width_us --e=stdc_bit_width_ui --e=stdc_bit_width_ul --e=stdc_bit_width_ull --e=stdc_bit_floor_uc --e=stdc_bit_floor_us --e=stdc_bit_floor_ui --e=stdc_bit_floor_ul --e=stdc_bit_floor_ull --e=stdc_bit_ceil_uc --e=stdc_bit_ceil_us --e=stdc_bit_ceil_ui --e=stdc_bit_ceil_ul --e=stdc_bit_ceil_ull --e=abort --e=abs --e=atoi --e=atof --e=atol --e=atoll --e=bsearch --e=div --e=labs --e=ldiv --e=llabs --e=lldiv --e=qsort --e=rand --e=srand --e=strtod --e=strtof --e=strtol --e=strtold --e=strtoll --e=strtoul --e=strtoull --e=difftime --e=feclearexcept --e=fedisableexcept --e=feenableexcept --e=fegetenv --e=fegetexcept --e=fegetexceptflag --e=fegetround --e=feholdexcept --e=fesetenv --e=fesetexceptflag --e=fesetround --e=feraiseexcept --e=fetestexcept --e=feupdateenv --e=acosf --e=acoshf --e=asinf --e=asinhf --e=atan2f --e=atanf --e=atanhf --e=ceil --e=ceilf --e=ceill --e=copysign --e=copysignf --e=copysignl --e=cosf --e=coshf --e=erff --e=exp --e=exp10 --e=exp10f --e=exp2 --e=exp2f --e=expf --e=expm1 --e=expm1f --e=fabs --e=fabsf --e=fabsl --e=fdim --e=fdimf --e=fdiml --e=floor --e=floorf --e=floorl --e=fma --e=fmaf --e=fmax --e=fmaxf --e=fmaxl --e=fmin --e=fminf --e=fminl --e=fmod --e=fmodf --e=fmodl --e=frexp --e=frexpf --e=frexpl --e=hypot --e=hypotf --e=ilogb --e=ilogbf --e=ilogbl --e=ldexp --e=ldexpf --e=ldexpl --e=llogb --e=llogbf --e=llogbl --e=llrint --e=llrintf --e=llrintl --e=llround --e=llroundf --e=llroundl --e=log --e=log10 --e=log10f --e=log1p --e=log1pf --e=log2 --e=log2f --e=logb --e=logbf --e=logbl --e=logf --e=lrint --e=lrintf --e=lrintl --e=lround --e=lroundf --e=lroundl --e=modf --e=modff --e=modfl --e=nan --e=nanf --e=nanl --e=nearbyint --e=nearbyintf --e=nearbyintl --e=nextafter --e=nextafterf --e=nextafterl --e=nexttoward --e=nexttowardf --e=nexttowardl --e=powf --e=remainder --e=remainderf --e=remainderl --e=remquo --e=remquof --e=remquol --e=rint --e=rintf --e=rintl --e=round --e=roundf --e=roundl --e=scalbn --e=scalbnf --e=scalbnl --e=sincosf --e=sinf --e=sinhf --e=sqrt --e=sqrtf --e=sqrtl --e=tanf --e=tanhf --e=trunc --e=truncf --e=truncl --e=abshk --e=abshr --e=absk --e=absr --e=abslk --e=abslr --e=exphk --e=expk --e=roundhk --e=roundhr --e=roundk --e=roundr --e=roundlk --e=roundlr --e=rounduhk --e=rounduhr --e=rounduk --e=roundur --e=roundulk --e=roundulr --e=sqrtuhk --e=sqrtuhr --e=sqrtuk --e=sqrtur --e=sqrtulr --e=uhksqrtus --e=uksqrtui /b/s/w/ir/x/w/llvm-llvm-project/libc/config/baremetal/api.td
error: off_t not found in any standard spec.

https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket/8751633430491432833/+/u/clang/build/stdout

Could you please fix or revert it?

@nickdesaulniers
Copy link
Member

Hmm. It looks like that error message could have come from 1 of 2 places:

  1. llvm::PrintFatalError(Name + " not found in any standard spec.\n");
  2. llvm::PrintFatalError(TypeName + " not found in any standard spec.\n");

So it's looking at APIIndexer's TypeSpecMap and MacroSpecMap. Those are set:

  1. MacroSpecMap[std::string(MacroSpec->getValueAsString("Name"))] =
  2. TypeSpecMap[std::string(TypeSpec->getValueAsString("Name"))] = TypeSpec;

MacroDefsMap:

MacroDefsMap[std::string(MacroDef->getValueAsString("Name"))] = MacroDef;

RequiredTypes:
RequiredTypes.insert(std::string(TypeName));

Perhaps it's because libc/config/baremetal/api.td is missing include "spec/posix.td" (a la linux/api.td)?

@Sh0g0-1758 can you please:

  1. revert e8aaa3e locally.
  2. add include "spec/posix.td" to libc/config/baremetal/api.td as a commit on top
  3. open a new PR

@gulfemsavrun can you please help test the PR once issued?

@gulfemsavrun
Copy link
Contributor

gulfemsavrun commented Apr 4, 2024

@gulfemsavrun can you please help test the PR once issued?

When the PR is issued, please let me know and I'm happy to verify it.

Sh0g0-1758 added a commit to Sh0g0-1758/llvm-project that referenced this pull request Apr 4, 2024
@Sh0g0-1758
Copy link
Member Author

@gulfemsavrun, opened a PR.

nickdesaulniers pushed a commit that referenced this pull request Apr 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants