Skip to content

[libc] Make hdrgen deduce header type lists from function signatures #127251

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

Merged
merged 2 commits into from
Feb 14, 2025

Conversation

frobtech
Copy link
Contributor

With this, the types list in YAML files should only be used to
list the types that a standard specifies should be in that header
per se. All the types referenced in function signatures will be
collected automatically.

With this, the `types` list in YAML files should only be used to
list the types that a standard specifies should be in that header
per se.  All the types referenced in function signatures will be
collected automatically.
@frobtech frobtech requested review from fabio-d and Caslyn February 14, 2025 19:58
@frobtech frobtech marked this pull request as ready for review February 14, 2025 19:58
@llvmbot llvmbot added the libc label Feb 14, 2025
@llvmbot
Copy link
Member

llvmbot commented Feb 14, 2025

@llvm/pr-subscribers-libc

Author: Roland McGrath (frobtech)

Changes

With this, the types list in YAML files should only be used to
list the types that a standard specifies should be in that header
per se. All the types referenced in function signatures will be
collected automatically.


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

6 Files Affected:

  • (modified) libc/utils/hdrgen/function.py (+50-7)
  • (modified) libc/utils/hdrgen/header.py (+45-12)
  • (modified) libc/utils/hdrgen/tests/expected_output/test_header.h (+1-1)
  • (modified) libc/utils/hdrgen/tests/input/subdir/test.yaml (-3)
  • (modified) libc/utils/hdrgen/tests/input/test_small.h.def (-1)
  • (modified) libc/utils/hdrgen/type.py (+7)
diff --git a/libc/utils/hdrgen/function.py b/libc/utils/hdrgen/function.py
index 8ae47e574785f..25a7fa80e4501 100644
--- a/libc/utils/hdrgen/function.py
+++ b/libc/utils/hdrgen/function.py
@@ -6,25 +6,68 @@
 #
 # ==-------------------------------------------------------------------------==#
 
+import re
+from type import Type
+
+
+# These are the keywords that appear in C type syntax but are not part of the
+# include file name.  This is all of the modifiers, qualifiers, and base types,
+# but not "struct".
+KEYWORDS = [
+    "_Atomic",
+    "_Complex",
+    "_Float16",
+    "_Noreturn",
+    "__restrict",
+    "accum",
+    "char",
+    "const",
+    "double",
+    "float",
+    "fract",
+    "int",
+    "long",
+    "short",
+    "signed",
+    "unsigned",
+    "void",
+    "volatile",
+]
+NONIDENTIFIER = re.compile("[^a-zA-Z0-9_]+")
+
 
 class Function:
     def __init__(
         self, return_type, name, arguments, standards, guard=None, attributes=[]
     ):
+        assert return_type
         self.return_type = return_type
         self.name = name
         self.arguments = [
             arg if isinstance(arg, str) else arg["type"] for arg in arguments
         ]
+        assert all(self.arguments)
         self.standards = standards
         self.guard = guard
-        self.attributes = attributes or ""
+        self.attributes = attributes or []
+
+    def signature_types(self):
+        def collapse(type_string):
+            assert type_string
+            # Split into words at nonidentifier characters (`*`, `[`, etc.),
+            # filter out keywords and numbers, and then rejoin with "_".
+            return "_".join(
+                word
+                for word in NONIDENTIFIER.split(type_string)
+                if word and not word.isdecimal() and word not in KEYWORDS
+            )
+
+        all_types = [self.return_type] + self.arguments
+        return {
+            Type(string) for string in filter(None, (collapse(t) for t in all_types))
+        }
 
     def __str__(self):
-        attributes_str = " ".join(self.attributes)
+        attrs_str = "".join(f"{attr} " for attr in self.attributes)
         arguments_str = ", ".join(self.arguments) if self.arguments else "void"
-        if attributes_str == "":
-            result = f"{self.return_type} {self.name}({arguments_str})"
-        else:
-            result = f"{attributes_str} {self.return_type} {self.name}({arguments_str})"
-        return result
+        return attrs_str + f"{self.return_type} {self.name}({arguments_str})"
diff --git a/libc/utils/hdrgen/header.py b/libc/utils/hdrgen/header.py
index f94cb8e628fa6..c817c02b83b75 100644
--- a/libc/utils/hdrgen/header.py
+++ b/libc/utils/hdrgen/header.py
@@ -6,9 +6,33 @@
 #
 # ==-------------------------------------------------------------------------==#
 
+from functools import reduce
 from pathlib import PurePosixPath
 
 
+STDINT_SIZES = [
+    "16",
+    "32",
+    "64",
+    "8",
+    "least16",
+    "least32",
+    "least64",
+    "least8",
+    "max",
+    "ptr",
+]
+
+COMPILER_HEADER_TYPES = (
+    {
+        "bool": "<stdbool.h>",
+        "va_list": "<stdarg.h>",
+    }
+    | {f"int{size}_t": "<stdint.h>" for size in STDINT_SIZES}
+    | {f"uint{size}_t": "<stdint.h>" for size in STDINT_SIZES}
+)
+
+
 class HeaderFile:
     def __init__(self, name):
         self.template_file = None
@@ -34,19 +58,25 @@ def add_object(self, object):
     def add_function(self, function):
         self.functions.append(function)
 
-    def includes(self):
-        return sorted(
-            {
-                PurePosixPath("llvm-libc-macros") / macro.header
-                for macro in self.macros
-                if macro.header is not None
-            }
-            | {
-                PurePosixPath("llvm-libc-types") / f"{typ.type_name}.h"
-                for typ in self.types
-            }
+    def all_types(self):
+        return reduce(
+            lambda a, b: a | b,
+            [f.signature_types() for f in self.functions],
+            set(self.types),
         )
 
+    def includes(self):
+        return {
+            PurePosixPath("llvm-libc-macros") / macro.header
+            for macro in self.macros
+            if macro.header is not None
+        } | {
+            COMPILER_HEADER_TYPES.get(
+                typ.type_name, PurePosixPath("llvm-libc-types") / f"{typ.type_name}.h"
+            )
+            for typ in self.all_types()
+        }
+
     def public_api(self):
         # Python 3.12 has .relative_to(dir, walk_up=True) for this.
         path_prefix = PurePosixPath("../" * (len(PurePosixPath(self.name).parents) - 1))
@@ -56,7 +86,10 @@ def relpath(file):
 
         content = [
             f"#include {file}"
-            for file in sorted(f'"{relpath(file)!s}"' for file in self.includes())
+            for file in sorted(
+                file if isinstance(file, str) else f'"{relpath(file)!s}"'
+                for file in self.includes()
+            )
         ]
 
         for macro in self.macros:
diff --git a/libc/utils/hdrgen/tests/expected_output/test_header.h b/libc/utils/hdrgen/tests/expected_output/test_header.h
index 838b6d7728150..748c09808c128 100644
--- a/libc/utils/hdrgen/tests/expected_output/test_header.h
+++ b/libc/utils/hdrgen/tests/expected_output/test_header.h
@@ -11,10 +11,10 @@
 
 #include "__llvm-libc-common.h"
 #include "llvm-libc-macros/float16-macros.h"
-#include "llvm-libc-types/float128.h"
 
 #include "llvm-libc-macros/test_more-macros.h"
 #include "llvm-libc-macros/test_small-macros.h"
+#include "llvm-libc-types/float128.h"
 #include "llvm-libc-types/type_a.h"
 #include "llvm-libc-types/type_b.h"
 
diff --git a/libc/utils/hdrgen/tests/input/subdir/test.yaml b/libc/utils/hdrgen/tests/input/subdir/test.yaml
index a414b6f387ccb..e68af00849b0e 100644
--- a/libc/utils/hdrgen/tests/input/subdir/test.yaml
+++ b/libc/utils/hdrgen/tests/input/subdir/test.yaml
@@ -1,8 +1,5 @@
 header: subdir/test.h
 header_template: test.h.def
-types:
-  - type_name: type_a
-  - type_name: type_b
 functions:
   - name: func
     return_type: type_a
diff --git a/libc/utils/hdrgen/tests/input/test_small.h.def b/libc/utils/hdrgen/tests/input/test_small.h.def
index 587b163b68d96..1f484a8a2bdb3 100644
--- a/libc/utils/hdrgen/tests/input/test_small.h.def
+++ b/libc/utils/hdrgen/tests/input/test_small.h.def
@@ -11,7 +11,6 @@
 
 #include "__llvm-libc-common.h"
 #include "llvm-libc-macros/float16-macros.h"
-#include "llvm-libc-types/float128.h"
 
 %%public_api()
 
diff --git a/libc/utils/hdrgen/type.py b/libc/utils/hdrgen/type.py
index b90480267d8d5..0dbd8a5837d15 100644
--- a/libc/utils/hdrgen/type.py
+++ b/libc/utils/hdrgen/type.py
@@ -9,4 +9,11 @@
 
 class Type:
     def __init__(self, type_name):
+        assert type_name
         self.type_name = type_name
+
+    def __eq__(self, other):
+        return self.type_name == other.type_name
+
+    def __hash__(self):
+        return self.type_name.__hash__()

@frobtech frobtech merged commit aa500a7 into llvm:main Feb 14, 2025
12 of 13 checks passed
@frobtech frobtech deleted the p/libc-hdrgen-auto-types branch February 14, 2025 20:54
@llvm-ci
Copy link
Collaborator

llvm-ci commented Feb 14, 2025

LLVM Buildbot has detected a new failure on builder openmp-offload-libc-amdgpu-runtime running on omp-vega20-1 while building libc at step 5 "compile-openmp".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/73/builds/13059

Here is the relevant piece of the build log for the reference
Step 5 (compile-openmp) failure: build (failure)
...
0.045 [604/34/63] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/sig_atomic_t.h
0.045 [603/34/64] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/float128.h
0.046 [602/34/65] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/cfloat128.h
0.046 [601/34/66] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/cfloat16.h
0.047 [600/34/67] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/locale_t.h
0.065 [599/34/68] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/struct_sigaction.h
0.065 [598/34/69] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/wint_t.h
0.077 [597/34/70] Generating /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/llvm-libc-types/struct_lconv.h
0.090 [596/34/71] Building CXX object libc/src/__support/RPC/CMakeFiles/libc.src.__support.RPC.rpc_client.dir/rpc_client.cpp.o
0.337 [595/34/72] Generating header float.h from /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/float.yaml
FAILED: /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/float.h 
cd /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/runtimes/runtimes-amdgcn-amd-amdhsa-bins && /usr/bin/python3.8 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py --output /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/float.h --depfile /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/float.h.d --write-if-changed --entry-point=__assert_fail --entry-point=isalnum --entry-point=isalnum_l --entry-point=isalpha --entry-point=isalpha_l --entry-point=isascii --entry-point=isblank --entry-point=isblank_l --entry-point=iscntrl --entry-point=iscntrl_l --entry-point=isdigit --entry-point=isdigit_l --entry-point=isgraph --entry-point=isgraph_l --entry-point=islower --entry-point=islower_l --entry-point=isprint --entry-point=isprint_l --entry-point=ispunct --entry-point=ispunct_l --entry-point=isspace --entry-point=isspace_l --entry-point=isupper --entry-point=isupper_l --entry-point=isxdigit --entry-point=isxdigit_l --entry-point=toascii --entry-point=tolower --entry-point=tolower_l --entry-point=toupper --entry-point=toupper_l --entry-point=memccpy --entry-point=memchr --entry-point=memcmp --entry-point=memcpy --entry-point=memmem --entry-point=memmove --entry-point=mempcpy --entry-point=memrchr --entry-point=memset --entry-point=stpcpy --entry-point=stpncpy --entry-point=strcasestr --entry-point=strcat --entry-point=strchr --entry-point=strchrnul --entry-point=strcmp --entry-point=strcoll --entry-point=strcoll_l --entry-point=strcpy --entry-point=strcspn --entry-point=strdup --entry-point=strerror --entry-point=strlcat --entry-point=strlcpy --entry-point=strlen --entry-point=strncat --entry-point=strncmp --entry-point=strncpy --entry-point=strndup --entry-point=strnlen --entry-point=strpbrk --entry-point=strrchr --entry-point=strsep --entry-point=strspn --entry-point=strstr --entry-point=strtok --entry-point=strtok_r --entry-point=strxfrm --entry-point=strxfrm_l --entry-point=bcmp --entry-point=bcopy --entry-point=bzero --entry-point=index --entry-point=rindex --entry-point=strcasecmp --entry-point=strncasecmp --entry-point=stdc_bit_ceil_uc --entry-point=stdc_bit_ceil_ui --entry-point=stdc_bit_ceil_ul --entry-point=stdc_bit_ceil_ull --entry-point=stdc_bit_ceil_us --entry-point=stdc_bit_floor_uc --entry-point=stdc_bit_floor_ui --entry-point=stdc_bit_floor_ul --entry-point=stdc_bit_floor_ull --entry-point=stdc_bit_floor_us --entry-point=stdc_bit_width_uc --entry-point=stdc_bit_width_ui --entry-point=stdc_bit_width_ul --entry-point=stdc_bit_width_ull --entry-point=stdc_bit_width_us --entry-point=stdc_count_ones_uc --entry-point=stdc_count_ones_ui --entry-point=stdc_count_ones_ul --entry-point=stdc_count_ones_ull --entry-point=stdc_count_ones_us --entry-point=stdc_count_zeros_uc --entry-point=stdc_count_zeros_ui --entry-point=stdc_count_zeros_ul --entry-point=stdc_count_zeros_ull --entry-point=stdc_count_zeros_us --entry-point=stdc_first_leading_one_uc --entry-point=stdc_first_leading_one_ui --entry-point=stdc_first_leading_one_ul --entry-point=stdc_first_leading_one_ull --entry-point=stdc_first_leading_one_us --entry-point=stdc_first_leading_zero_uc --entry-point=stdc_first_leading_zero_ui --entry-point=stdc_first_leading_zero_ul --entry-point=stdc_first_leading_zero_ull --entry-point=stdc_first_leading_zero_us --entry-point=stdc_first_trailing_one_uc --entry-point=stdc_first_trailing_one_ui --entry-point=stdc_first_trailing_one_ul --entry-point=stdc_first_trailing_one_ull --entry-point=stdc_first_trailing_one_us --entry-point=stdc_first_trailing_zero_uc --entry-point=stdc_first_trailing_zero_ui --entry-point=stdc_first_trailing_zero_ul --entry-point=stdc_first_trailing_zero_ull --entry-point=stdc_first_trailing_zero_us --entry-point=stdc_has_single_bit_uc --entry-point=stdc_has_single_bit_ui --entry-point=stdc_has_single_bit_ul --entry-point=stdc_has_single_bit_ull --entry-point=stdc_has_single_bit_us --entry-point=stdc_leading_ones_uc --entry-point=stdc_leading_ones_ui --entry-point=stdc_leading_ones_ul --entry-point=stdc_leading_ones_ull --entry-point=stdc_leading_ones_us --entry-point=stdc_leading_zeros_uc --entry-point=stdc_leading_zeros_ui --entry-point=stdc_leading_zeros_ul --entry-point=stdc_leading_zeros_ull --entry-point=stdc_leading_zeros_us --entry-point=stdc_trailing_ones_uc --entry-point=stdc_trailing_ones_ui --entry-point=stdc_trailing_ones_ul --entry-point=stdc_trailing_ones_ull --entry-point=stdc_trailing_ones_us --entry-point=stdc_trailing_zeros_uc --entry-point=stdc_trailing_zeros_ui --entry-point=stdc_trailing_zeros_ul --entry-point=stdc_trailing_zeros_ull --entry-point=stdc_trailing_zeros_us --entry-point=_Exit --entry-point=abort --entry-point=abs --entry-point=atexit --entry-point=atof --entry-point=atoi --entry-point=atol --entry-point=atoll --entry-point=bsearch --entry-point=div --entry-point=exit --entry-point=labs --entry-point=ldiv --entry-point=llabs --entry-point=lldiv --entry-point=qsort --entry-point=qsort_r --entry-point=rand --entry-point=srand --entry-point=strtod --entry-point=strtod_l --entry-point=strtof --entry-point=strtof_l --entry-point=strtol --entry-point=strtol_l --entry-point=strtold --entry-point=strtold_l --entry-point=strtoll --entry-point=strtoll_l --entry-point=strtoul --entry-point=strtoul_l --entry-point=strtoull --entry-point=strtoull_l --entry-point=at_quick_exit --entry-point=quick_exit --entry-point=getenv --entry-point=system --entry-point=aligned_alloc --entry-point=calloc --entry-point=free --entry-point=malloc --entry-point=realloc --entry-point=errno --entry-point=clearerr --entry-point=fclose --entry-point=printf --entry-point=vprintf --entry-point=fprintf --entry-point=vfprintf --entry-point=snprintf --entry-point=sprintf --entry-point=vsnprintf --entry-point=vsprintf --entry-point=asprintf --entry-point=vasprintf --entry-point=scanf --entry-point=vscanf --entry-point=fscanf --entry-point=vfscanf --entry-point=sscanf --entry-point=vsscanf --entry-point=feof --entry-point=ferror --entry-point=fflush --entry-point=fgetc --entry-point=fgets --entry-point=fopen --entry-point=fputc --entry-point=fputs --entry-point=fread --entry-point=fseek --entry-point=ftell --entry-point=fwrite --entry-point=getc --entry-point=getchar --entry-point=putc --entry-point=putchar --entry-point=puts --entry-point=remove --entry-point=rename --entry-point=stderr --entry-point=stdin --entry-point=stdout --entry-point=ungetc --entry-point=imaxabs --entry-point=imaxdiv --entry-point=strtoimax --entry-point=strtoumax --entry-point=clock --entry-point=clock_gettime --entry-point=timespec_get --entry-point=nanosleep --entry-point=wcslen --entry-point=wctob --entry-point=localeconv --entry-point=duplocale --entry-point=freelocale --entry-point=localeconv --entry-point=newlocale --entry-point=setlocale --entry-point=uselocale --entry-point=acos --entry-point=acosf --entry-point=acosh --entry-point=acoshf --entry-point=asin --entry-point=asinf --entry-point=asinh --entry-point=asinhf --entry-point=atan --entry-point=atan2 --entry-point=atan2f --entry-point=atan2l --entry-point=atanf --entry-point=atanh --entry-point=atanhf --entry-point=canonicalize --entry-point=canonicalizef --entry-point=canonicalizel --entry-point=cbrt --entry-point=cbrtf --entry-point=ceil --entry-point=ceilf --entry-point=ceill --entry-point=copysign --entry-point=copysignf --entry-point=copysignl --entry-point=cos --entry-point=cosf --entry-point=cosh --entry-point=coshf --entry-point=cospif --entry-point=ddivl --entry-point=dfmal --entry-point=dmull --entry-point=dsqrtl --entry-point=erf --entry-point=erff --entry-point=exp --entry-point=exp10 --entry-point=exp10f --entry-point=exp2 --entry-point=exp2f --entry-point=exp2m1f --entry-point=expf --entry-point=expm1 --entry-point=expm1f --entry-point=fabs --entry-point=fabsf --entry-point=fabsl --entry-point=fadd --entry-point=faddl --entry-point=fdim --entry-point=fdimf --entry-point=fdiml --entry-point=fdiv --entry-point=fdivl --entry-point=ffma --entry-point=ffmal --entry-point=floor --entry-point=floorf --entry-point=floorl --entry-point=fma --entry-point=fmaf --entry-point=fmax --entry-point=fmaxf --entry-point=fmaximum --entry-point=fmaximumf --entry-point=fmaximuml --entry-point=fmaximum_mag --entry-point=fmaximum_magf --entry-point=fmaximum_magl --entry-point=fmaximum_mag_num --entry-point=fmaximum_mag_numf --entry-point=fmaximum_mag_numl --entry-point=fmaximum_num --entry-point=fmaximum_numf --entry-point=fmaximum_numl --entry-point=fmaxl --entry-point=fmin --entry-point=fminf --entry-point=fminimum --entry-point=fminimumf --entry-point=fminimuml --entry-point=fminimum_mag --entry-point=fminimum_magf --entry-point=fminimum_magl --entry-point=fminimum_mag_num --entry-point=fminimum_mag_numf --entry-point=fminimum_mag_numl --entry-point=fminimum_num --entry-point=fminimum_numf --entry-point=fminimum_numl --entry-point=fminl --entry-point=fmod --entry-point=fmodf --entry-point=fmodl --entry-point=fmul --entry-point=fmull --entry-point=frexp --entry-point=frexpf --entry-point=frexpl --entry-point=fromfp --entry-point=fromfpf --entry-point=fromfpl --entry-point=fromfpx --entry-point=fromfpxf --entry-point=fromfpxl --entry-point=fsqrt --entry-point=fsqrtl --entry-point=fsub --entry-point=fsubl --entry-point=getpayload --entry-point=getpayloadf --entry-point=getpayloadl --entry-point=hypot --entry-point=hypotf --entry-point=ilogb --entry-point=ilogbf --entry-point=ilogbl --entry-point=isnan --entry-point=isnanf --entry-point=isnanl --entry-point=ldexp --entry-point=ldexpf --entry-point=ldexpl --entry-point=lgamma --entry-point=lgamma_r --entry-point=llogb --entry-point=llogbf --entry-point=llogbl --entry-point=llrint --entry-point=llrintf --entry-point=llrintl --entry-point=llround --entry-point=llroundf --entry-point=llroundl --entry-point=log --entry-point=log10 --entry-point=log10f --entry-point=log1p --entry-point=log1pf --entry-point=log2 --entry-point=log2f --entry-point=logb --entry-point=logbf --entry-point=logbl --entry-point=logf --entry-point=lrint --entry-point=lrintf --entry-point=lrintl --entry-point=lround --entry-point=lroundf --entry-point=lroundl --entry-point=modf --entry-point=modff --entry-point=modfl --entry-point=nan --entry-point=nanf --entry-point=nanl --entry-point=nearbyint --entry-point=nearbyintf --entry-point=nearbyintl --entry-point=nextafter --entry-point=nextafterf --entry-point=nextafterl --entry-point=nextdown --entry-point=nextdownf --entry-point=nextdownl --entry-point=nexttoward --entry-point=nexttowardf --entry-point=nexttowardl --entry-point=nextup --entry-point=nextupf --entry-point=nextupl --entry-point=pow --entry-point=powf --entry-point=powi --entry-point=powif --entry-point=remainder --entry-point=remainderf --entry-point=remainderl --entry-point=remquo --entry-point=remquof --entry-point=remquol --entry-point=rint --entry-point=rintf --entry-point=rintl --entry-point=roundeven --entry-point=roundevenf --entry-point=roundevenl --entry-point=round --entry-point=roundf --entry-point=roundl --entry-point=scalbln --entry-point=scalblnf --entry-point=scalblnl --entry-point=scalbn --entry-point=scalbnf --entry-point=scalbnl --entry-point=setpayload --entry-point=setpayloadf --entry-point=setpayloadl --entry-point=setpayloadsig --entry-point=setpayloadsigf --entry-point=setpayloadsigl --entry-point=sin --entry-point=sincos --entry-point=sincosf --entry-point=sinf --entry-point=sinh --entry-point=sinhf --entry-point=sinpif --entry-point=sqrt --entry-point=sqrtf --entry-point=sqrtl --entry-point=tan --entry-point=tanf --entry-point=tanh --entry-point=tanhf --entry-point=tgamma --entry-point=tgammaf --entry-point=totalorder --entry-point=totalorderf --entry-point=totalorderl --entry-point=totalordermag --entry-point=totalordermagf --entry-point=totalordermagl --entry-point=trunc --entry-point=truncf --entry-point=truncl --entry-point=ufromfp --entry-point=ufromfpf --entry-point=ufromfpl --entry-point=ufromfpx --entry-point=ufromfpxf --entry-point=ufromfpxl --entry-point=canonicalizef16 --entry-point=ceilf16 --entry-point=copysignf16 --entry-point=coshf16 --entry-point=exp10f16 --entry-point=exp10m1f16 --entry-point=exp2f16 --entry-point=expf16 --entry-point=f16add --entry-point=f16addf --entry-point=f16addl --entry-point=f16div --entry-point=f16divf --entry-point=f16divl --entry-point=f16fma --entry-point=f16fmaf --entry-point=f16fmal --entry-point=f16mul --entry-point=f16mulf --entry-point=f16mull --entry-point=f16sqrt --entry-point=f16sqrtf --entry-point=f16sqrtl --entry-point=f16sub --entry-point=f16subf --entry-point=f16subl --entry-point=fabsf16 --entry-point=fdimf16 --entry-point=floorf16 --entry-point=fmaxf16 --entry-point=fmaximum_mag_numf16 --entry-point=fmaximum_magf16 --entry-point=fmaximum_numf16 --entry-point=fmaximumf16 --entry-point=fminf16 --entry-point=fminimum_mag_numf16 --entry-point=fminimum_magf16 --entry-point=fminimum_numf16 --entry-point=fminimumf16 --entry-point=fmodf16 --entry-point=frexpf16 --entry-point=fromfpf16 --entry-point=fromfpxf16 --entry-point=getpayloadf16 --entry-point=ilogbf16 --entry-point=ldexpf16 --entry-point=llogbf16 --entry-point=llrintf16 --entry-point=llroundf16 --entry-point=log10f16 --entry-point=log2f16 --entry-point=logbf16 --entry-point=logf16 --entry-point=lrintf16 --entry-point=lroundf16 --entry-point=modff16 --entry-point=nanf16 --entry-point=nearbyintf16 --entry-point=nextafterf16 --entry-point=nextdownf16 --entry-point=nexttowardf16 --entry-point=nextupf16 --entry-point=remainderf16 --entry-point=remquof16 --entry-point=rintf16 --entry-point=roundevenf16 --entry-point=roundf16 --entry-point=scalblnf16 --entry-point=scalbnf16 --entry-point=setpayloadf16 --entry-point=setpayloadsigf16 --entry-point=sinhf16 --entry-point=sqrtf16 --entry-point=tanhf16 --entry-point=totalorderf16 --entry-point=totalordermagf16 --entry-point=truncf16 --entry-point=ufromfpf16 --entry-point=ufromfpxf16 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/float.yaml
Traceback (most recent call last):
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py", line 15, in <module>
    from header import HeaderFile
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/header.py", line 27, in <module>
    {
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'
0.349 [595/33/73] Generating header string.h from /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/string.yaml
FAILED: /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/string.h 
cd /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/runtimes/runtimes-amdgcn-amd-amdhsa-bins && /usr/bin/python3.8 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py --output /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/string.h --depfile /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/string.h.d --write-if-changed --entry-point=__assert_fail --entry-point=isalnum --entry-point=isalnum_l --entry-point=isalpha --entry-point=isalpha_l --entry-point=isascii --entry-point=isblank --entry-point=isblank_l --entry-point=iscntrl --entry-point=iscntrl_l --entry-point=isdigit --entry-point=isdigit_l --entry-point=isgraph --entry-point=isgraph_l --entry-point=islower --entry-point=islower_l --entry-point=isprint --entry-point=isprint_l --entry-point=ispunct --entry-point=ispunct_l --entry-point=isspace --entry-point=isspace_l --entry-point=isupper --entry-point=isupper_l --entry-point=isxdigit --entry-point=isxdigit_l --entry-point=toascii --entry-point=tolower --entry-point=tolower_l --entry-point=toupper --entry-point=toupper_l --entry-point=memccpy --entry-point=memchr --entry-point=memcmp --entry-point=memcpy --entry-point=memmem --entry-point=memmove --entry-point=mempcpy --entry-point=memrchr --entry-point=memset --entry-point=stpcpy --entry-point=stpncpy --entry-point=strcasestr --entry-point=strcat --entry-point=strchr --entry-point=strchrnul --entry-point=strcmp --entry-point=strcoll --entry-point=strcoll_l --entry-point=strcpy --entry-point=strcspn --entry-point=strdup --entry-point=strerror --entry-point=strlcat --entry-point=strlcpy --entry-point=strlen --entry-point=strncat --entry-point=strncmp --entry-point=strncpy --entry-point=strndup --entry-point=strnlen --entry-point=strpbrk --entry-point=strrchr --entry-point=strsep --entry-point=strspn --entry-point=strstr --entry-point=strtok --entry-point=strtok_r --entry-point=strxfrm --entry-point=strxfrm_l --entry-point=bcmp --entry-point=bcopy --entry-point=bzero --entry-point=index --entry-point=rindex --entry-point=strcasecmp --entry-point=strncasecmp --entry-point=stdc_bit_ceil_uc --entry-point=stdc_bit_ceil_ui --entry-point=stdc_bit_ceil_ul --entry-point=stdc_bit_ceil_ull --entry-point=stdc_bit_ceil_us --entry-point=stdc_bit_floor_uc --entry-point=stdc_bit_floor_ui --entry-point=stdc_bit_floor_ul --entry-point=stdc_bit_floor_ull --entry-point=stdc_bit_floor_us --entry-point=stdc_bit_width_uc --entry-point=stdc_bit_width_ui --entry-point=stdc_bit_width_ul --entry-point=stdc_bit_width_ull --entry-point=stdc_bit_width_us --entry-point=stdc_count_ones_uc --entry-point=stdc_count_ones_ui --entry-point=stdc_count_ones_ul --entry-point=stdc_count_ones_ull --entry-point=stdc_count_ones_us --entry-point=stdc_count_zeros_uc --entry-point=stdc_count_zeros_ui --entry-point=stdc_count_zeros_ul --entry-point=stdc_count_zeros_ull --entry-point=stdc_count_zeros_us --entry-point=stdc_first_leading_one_uc --entry-point=stdc_first_leading_one_ui --entry-point=stdc_first_leading_one_ul --entry-point=stdc_first_leading_one_ull --entry-point=stdc_first_leading_one_us --entry-point=stdc_first_leading_zero_uc --entry-point=stdc_first_leading_zero_ui --entry-point=stdc_first_leading_zero_ul --entry-point=stdc_first_leading_zero_ull --entry-point=stdc_first_leading_zero_us --entry-point=stdc_first_trailing_one_uc --entry-point=stdc_first_trailing_one_ui --entry-point=stdc_first_trailing_one_ul --entry-point=stdc_first_trailing_one_ull --entry-point=stdc_first_trailing_one_us --entry-point=stdc_first_trailing_zero_uc --entry-point=stdc_first_trailing_zero_ui --entry-point=stdc_first_trailing_zero_ul --entry-point=stdc_first_trailing_zero_ull --entry-point=stdc_first_trailing_zero_us --entry-point=stdc_has_single_bit_uc --entry-point=stdc_has_single_bit_ui --entry-point=stdc_has_single_bit_ul --entry-point=stdc_has_single_bit_ull --entry-point=stdc_has_single_bit_us --entry-point=stdc_leading_ones_uc --entry-point=stdc_leading_ones_ui --entry-point=stdc_leading_ones_ul --entry-point=stdc_leading_ones_ull --entry-point=stdc_leading_ones_us --entry-point=stdc_leading_zeros_uc --entry-point=stdc_leading_zeros_ui --entry-point=stdc_leading_zeros_ul --entry-point=stdc_leading_zeros_ull --entry-point=stdc_leading_zeros_us --entry-point=stdc_trailing_ones_uc --entry-point=stdc_trailing_ones_ui --entry-point=stdc_trailing_ones_ul --entry-point=stdc_trailing_ones_ull --entry-point=stdc_trailing_ones_us --entry-point=stdc_trailing_zeros_uc --entry-point=stdc_trailing_zeros_ui --entry-point=stdc_trailing_zeros_ul --entry-point=stdc_trailing_zeros_ull --entry-point=stdc_trailing_zeros_us --entry-point=_Exit --entry-point=abort --entry-point=abs --entry-point=atexit --entry-point=atof --entry-point=atoi --entry-point=atol --entry-point=atoll --entry-point=bsearch --entry-point=div --entry-point=exit --entry-point=labs --entry-point=ldiv --entry-point=llabs --entry-point=lldiv --entry-point=qsort --entry-point=qsort_r --entry-point=rand --entry-point=srand --entry-point=strtod --entry-point=strtod_l --entry-point=strtof --entry-point=strtof_l --entry-point=strtol --entry-point=strtol_l --entry-point=strtold --entry-point=strtold_l --entry-point=strtoll --entry-point=strtoll_l --entry-point=strtoul --entry-point=strtoul_l --entry-point=strtoull --entry-point=strtoull_l --entry-point=at_quick_exit --entry-point=quick_exit --entry-point=getenv --entry-point=system --entry-point=aligned_alloc --entry-point=calloc --entry-point=free --entry-point=malloc --entry-point=realloc --entry-point=errno --entry-point=clearerr --entry-point=fclose --entry-point=printf --entry-point=vprintf --entry-point=fprintf --entry-point=vfprintf --entry-point=snprintf --entry-point=sprintf --entry-point=vsnprintf --entry-point=vsprintf --entry-point=asprintf --entry-point=vasprintf --entry-point=scanf --entry-point=vscanf --entry-point=fscanf --entry-point=vfscanf --entry-point=sscanf --entry-point=vsscanf --entry-point=feof --entry-point=ferror --entry-point=fflush --entry-point=fgetc --entry-point=fgets --entry-point=fopen --entry-point=fputc --entry-point=fputs --entry-point=fread --entry-point=fseek --entry-point=ftell --entry-point=fwrite --entry-point=getc --entry-point=getchar --entry-point=putc --entry-point=putchar --entry-point=puts --entry-point=remove --entry-point=rename --entry-point=stderr --entry-point=stdin --entry-point=stdout --entry-point=ungetc --entry-point=imaxabs --entry-point=imaxdiv --entry-point=strtoimax --entry-point=strtoumax --entry-point=clock --entry-point=clock_gettime --entry-point=timespec_get --entry-point=nanosleep --entry-point=wcslen --entry-point=wctob --entry-point=localeconv --entry-point=duplocale --entry-point=freelocale --entry-point=localeconv --entry-point=newlocale --entry-point=setlocale --entry-point=uselocale --entry-point=acos --entry-point=acosf --entry-point=acosh --entry-point=acoshf --entry-point=asin --entry-point=asinf --entry-point=asinh --entry-point=asinhf --entry-point=atan --entry-point=atan2 --entry-point=atan2f --entry-point=atan2l --entry-point=atanf --entry-point=atanh --entry-point=atanhf --entry-point=canonicalize --entry-point=canonicalizef --entry-point=canonicalizel --entry-point=cbrt --entry-point=cbrtf --entry-point=ceil --entry-point=ceilf --entry-point=ceill --entry-point=copysign --entry-point=copysignf --entry-point=copysignl --entry-point=cos --entry-point=cosf --entry-point=cosh --entry-point=coshf --entry-point=cospif --entry-point=ddivl --entry-point=dfmal --entry-point=dmull --entry-point=dsqrtl --entry-point=erf --entry-point=erff --entry-point=exp --entry-point=exp10 --entry-point=exp10f --entry-point=exp2 --entry-point=exp2f --entry-point=exp2m1f --entry-point=expf --entry-point=expm1 --entry-point=expm1f --entry-point=fabs --entry-point=fabsf --entry-point=fabsl --entry-point=fadd --entry-point=faddl --entry-point=fdim --entry-point=fdimf --entry-point=fdiml --entry-point=fdiv --entry-point=fdivl --entry-point=ffma --entry-point=ffmal --entry-point=floor --entry-point=floorf --entry-point=floorl --entry-point=fma --entry-point=fmaf --entry-point=fmax --entry-point=fmaxf --entry-point=fmaximum --entry-point=fmaximumf --entry-point=fmaximuml --entry-point=fmaximum_mag --entry-point=fmaximum_magf --entry-point=fmaximum_magl --entry-point=fmaximum_mag_num --entry-point=fmaximum_mag_numf --entry-point=fmaximum_mag_numl --entry-point=fmaximum_num --entry-point=fmaximum_numf --entry-point=fmaximum_numl --entry-point=fmaxl --entry-point=fmin --entry-point=fminf --entry-point=fminimum --entry-point=fminimumf --entry-point=fminimuml --entry-point=fminimum_mag --entry-point=fminimum_magf --entry-point=fminimum_magl --entry-point=fminimum_mag_num --entry-point=fminimum_mag_numf --entry-point=fminimum_mag_numl --entry-point=fminimum_num --entry-point=fminimum_numf --entry-point=fminimum_numl --entry-point=fminl --entry-point=fmod --entry-point=fmodf --entry-point=fmodl --entry-point=fmul --entry-point=fmull --entry-point=frexp --entry-point=frexpf --entry-point=frexpl --entry-point=fromfp --entry-point=fromfpf --entry-point=fromfpl --entry-point=fromfpx --entry-point=fromfpxf --entry-point=fromfpxl --entry-point=fsqrt --entry-point=fsqrtl --entry-point=fsub --entry-point=fsubl --entry-point=getpayload --entry-point=getpayloadf --entry-point=getpayloadl --entry-point=hypot --entry-point=hypotf --entry-point=ilogb --entry-point=ilogbf --entry-point=ilogbl --entry-point=isnan --entry-point=isnanf --entry-point=isnanl --entry-point=ldexp --entry-point=ldexpf --entry-point=ldexpl --entry-point=lgamma --entry-point=lgamma_r --entry-point=llogb --entry-point=llogbf --entry-point=llogbl --entry-point=llrint --entry-point=llrintf --entry-point=llrintl --entry-point=llround --entry-point=llroundf --entry-point=llroundl --entry-point=log --entry-point=log10 --entry-point=log10f --entry-point=log1p --entry-point=log1pf --entry-point=log2 --entry-point=log2f --entry-point=logb --entry-point=logbf --entry-point=logbl --entry-point=logf --entry-point=lrint --entry-point=lrintf --entry-point=lrintl --entry-point=lround --entry-point=lroundf --entry-point=lroundl --entry-point=modf --entry-point=modff --entry-point=modfl --entry-point=nan --entry-point=nanf --entry-point=nanl --entry-point=nearbyint --entry-point=nearbyintf --entry-point=nearbyintl --entry-point=nextafter --entry-point=nextafterf --entry-point=nextafterl --entry-point=nextdown --entry-point=nextdownf --entry-point=nextdownl --entry-point=nexttoward --entry-point=nexttowardf --entry-point=nexttowardl --entry-point=nextup --entry-point=nextupf --entry-point=nextupl --entry-point=pow --entry-point=powf --entry-point=powi --entry-point=powif --entry-point=remainder --entry-point=remainderf --entry-point=remainderl --entry-point=remquo --entry-point=remquof --entry-point=remquol --entry-point=rint --entry-point=rintf --entry-point=rintl --entry-point=roundeven --entry-point=roundevenf --entry-point=roundevenl --entry-point=round --entry-point=roundf --entry-point=roundl --entry-point=scalbln --entry-point=scalblnf --entry-point=scalblnl --entry-point=scalbn --entry-point=scalbnf --entry-point=scalbnl --entry-point=setpayload --entry-point=setpayloadf --entry-point=setpayloadl --entry-point=setpayloadsig --entry-point=setpayloadsigf --entry-point=setpayloadsigl --entry-point=sin --entry-point=sincos --entry-point=sincosf --entry-point=sinf --entry-point=sinh --entry-point=sinhf --entry-point=sinpif --entry-point=sqrt --entry-point=sqrtf --entry-point=sqrtl --entry-point=tan --entry-point=tanf --entry-point=tanh --entry-point=tanhf --entry-point=tgamma --entry-point=tgammaf --entry-point=totalorder --entry-point=totalorderf --entry-point=totalorderl --entry-point=totalordermag --entry-point=totalordermagf --entry-point=totalordermagl --entry-point=trunc --entry-point=truncf --entry-point=truncl --entry-point=ufromfp --entry-point=ufromfpf --entry-point=ufromfpl --entry-point=ufromfpx --entry-point=ufromfpxf --entry-point=ufromfpxl --entry-point=canonicalizef16 --entry-point=ceilf16 --entry-point=copysignf16 --entry-point=coshf16 --entry-point=exp10f16 --entry-point=exp10m1f16 --entry-point=exp2f16 --entry-point=expf16 --entry-point=f16add --entry-point=f16addf --entry-point=f16addl --entry-point=f16div --entry-point=f16divf --entry-point=f16divl --entry-point=f16fma --entry-point=f16fmaf --entry-point=f16fmal --entry-point=f16mul --entry-point=f16mulf --entry-point=f16mull --entry-point=f16sqrt --entry-point=f16sqrtf --entry-point=f16sqrtl --entry-point=f16sub --entry-point=f16subf --entry-point=f16subl --entry-point=fabsf16 --entry-point=fdimf16 --entry-point=floorf16 --entry-point=fmaxf16 --entry-point=fmaximum_mag_numf16 --entry-point=fmaximum_magf16 --entry-point=fmaximum_numf16 --entry-point=fmaximumf16 --entry-point=fminf16 --entry-point=fminimum_mag_numf16 --entry-point=fminimum_magf16 --entry-point=fminimum_numf16 --entry-point=fminimumf16 --entry-point=fmodf16 --entry-point=frexpf16 --entry-point=fromfpf16 --entry-point=fromfpxf16 --entry-point=getpayloadf16 --entry-point=ilogbf16 --entry-point=ldexpf16 --entry-point=llogbf16 --entry-point=llrintf16 --entry-point=llroundf16 --entry-point=log10f16 --entry-point=log2f16 --entry-point=logbf16 --entry-point=logf16 --entry-point=lrintf16 --entry-point=lroundf16 --entry-point=modff16 --entry-point=nanf16 --entry-point=nearbyintf16 --entry-point=nextafterf16 --entry-point=nextdownf16 --entry-point=nexttowardf16 --entry-point=nextupf16 --entry-point=remainderf16 --entry-point=remquof16 --entry-point=rintf16 --entry-point=roundevenf16 --entry-point=roundf16 --entry-point=scalblnf16 --entry-point=scalbnf16 --entry-point=setpayloadf16 --entry-point=setpayloadsigf16 --entry-point=sinhf16 --entry-point=sqrtf16 --entry-point=tanhf16 --entry-point=totalorderf16 --entry-point=totalordermagf16 --entry-point=truncf16 --entry-point=ufromfpf16 --entry-point=ufromfpxf16 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/string.yaml
Traceback (most recent call last):
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py", line 15, in <module>
    from header import HeaderFile
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/header.py", line 27, in <module>
    {
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'
0.351 [595/32/74] Generating header errno.h from /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/errno.yaml
FAILED: /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/errno.h 
cd /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/runtimes/runtimes-amdgcn-amd-amdhsa-bins && /usr/bin/python3.8 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py --output /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/errno.h --depfile /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/errno.h.d --write-if-changed --entry-point=__assert_fail --entry-point=isalnum --entry-point=isalnum_l --entry-point=isalpha --entry-point=isalpha_l --entry-point=isascii --entry-point=isblank --entry-point=isblank_l --entry-point=iscntrl --entry-point=iscntrl_l --entry-point=isdigit --entry-point=isdigit_l --entry-point=isgraph --entry-point=isgraph_l --entry-point=islower --entry-point=islower_l --entry-point=isprint --entry-point=isprint_l --entry-point=ispunct --entry-point=ispunct_l --entry-point=isspace --entry-point=isspace_l --entry-point=isupper --entry-point=isupper_l --entry-point=isxdigit --entry-point=isxdigit_l --entry-point=toascii --entry-point=tolower --entry-point=tolower_l --entry-point=toupper --entry-point=toupper_l --entry-point=memccpy --entry-point=memchr --entry-point=memcmp --entry-point=memcpy --entry-point=memmem --entry-point=memmove --entry-point=mempcpy --entry-point=memrchr --entry-point=memset --entry-point=stpcpy --entry-point=stpncpy --entry-point=strcasestr --entry-point=strcat --entry-point=strchr --entry-point=strchrnul --entry-point=strcmp --entry-point=strcoll --entry-point=strcoll_l --entry-point=strcpy --entry-point=strcspn --entry-point=strdup --entry-point=strerror --entry-point=strlcat --entry-point=strlcpy --entry-point=strlen --entry-point=strncat --entry-point=strncmp --entry-point=strncpy --entry-point=strndup --entry-point=strnlen --entry-point=strpbrk --entry-point=strrchr --entry-point=strsep --entry-point=strspn --entry-point=strstr --entry-point=strtok --entry-point=strtok_r --entry-point=strxfrm --entry-point=strxfrm_l --entry-point=bcmp --entry-point=bcopy --entry-point=bzero --entry-point=index --entry-point=rindex --entry-point=strcasecmp --entry-point=strncasecmp --entry-point=stdc_bit_ceil_uc --entry-point=stdc_bit_ceil_ui --entry-point=stdc_bit_ceil_ul --entry-point=stdc_bit_ceil_ull --entry-point=stdc_bit_ceil_us --entry-point=stdc_bit_floor_uc --entry-point=stdc_bit_floor_ui --entry-point=stdc_bit_floor_ul --entry-point=stdc_bit_floor_ull --entry-point=stdc_bit_floor_us --entry-point=stdc_bit_width_uc --entry-point=stdc_bit_width_ui --entry-point=stdc_bit_width_ul --entry-point=stdc_bit_width_ull --entry-point=stdc_bit_width_us --entry-point=stdc_count_ones_uc --entry-point=stdc_count_ones_ui --entry-point=stdc_count_ones_ul --entry-point=stdc_count_ones_ull --entry-point=stdc_count_ones_us --entry-point=stdc_count_zeros_uc --entry-point=stdc_count_zeros_ui --entry-point=stdc_count_zeros_ul --entry-point=stdc_count_zeros_ull --entry-point=stdc_count_zeros_us --entry-point=stdc_first_leading_one_uc --entry-point=stdc_first_leading_one_ui --entry-point=stdc_first_leading_one_ul --entry-point=stdc_first_leading_one_ull --entry-point=stdc_first_leading_one_us --entry-point=stdc_first_leading_zero_uc --entry-point=stdc_first_leading_zero_ui --entry-point=stdc_first_leading_zero_ul --entry-point=stdc_first_leading_zero_ull --entry-point=stdc_first_leading_zero_us --entry-point=stdc_first_trailing_one_uc --entry-point=stdc_first_trailing_one_ui --entry-point=stdc_first_trailing_one_ul --entry-point=stdc_first_trailing_one_ull --entry-point=stdc_first_trailing_one_us --entry-point=stdc_first_trailing_zero_uc --entry-point=stdc_first_trailing_zero_ui --entry-point=stdc_first_trailing_zero_ul --entry-point=stdc_first_trailing_zero_ull --entry-point=stdc_first_trailing_zero_us --entry-point=stdc_has_single_bit_uc --entry-point=stdc_has_single_bit_ui --entry-point=stdc_has_single_bit_ul --entry-point=stdc_has_single_bit_ull --entry-point=stdc_has_single_bit_us --entry-point=stdc_leading_ones_uc --entry-point=stdc_leading_ones_ui --entry-point=stdc_leading_ones_ul --entry-point=stdc_leading_ones_ull --entry-point=stdc_leading_ones_us --entry-point=stdc_leading_zeros_uc --entry-point=stdc_leading_zeros_ui --entry-point=stdc_leading_zeros_ul --entry-point=stdc_leading_zeros_ull --entry-point=stdc_leading_zeros_us --entry-point=stdc_trailing_ones_uc --entry-point=stdc_trailing_ones_ui --entry-point=stdc_trailing_ones_ul --entry-point=stdc_trailing_ones_ull --entry-point=stdc_trailing_ones_us --entry-point=stdc_trailing_zeros_uc --entry-point=stdc_trailing_zeros_ui --entry-point=stdc_trailing_zeros_ul --entry-point=stdc_trailing_zeros_ull --entry-point=stdc_trailing_zeros_us --entry-point=_Exit --entry-point=abort --entry-point=abs --entry-point=atexit --entry-point=atof --entry-point=atoi --entry-point=atol --entry-point=atoll --entry-point=bsearch --entry-point=div --entry-point=exit --entry-point=labs --entry-point=ldiv --entry-point=llabs --entry-point=lldiv --entry-point=qsort --entry-point=qsort_r --entry-point=rand --entry-point=srand --entry-point=strtod --entry-point=strtod_l --entry-point=strtof --entry-point=strtof_l --entry-point=strtol --entry-point=strtol_l --entry-point=strtold --entry-point=strtold_l --entry-point=strtoll --entry-point=strtoll_l --entry-point=strtoul --entry-point=strtoul_l --entry-point=strtoull --entry-point=strtoull_l --entry-point=at_quick_exit --entry-point=quick_exit --entry-point=getenv --entry-point=system --entry-point=aligned_alloc --entry-point=calloc --entry-point=free --entry-point=malloc --entry-point=realloc --entry-point=errno --entry-point=clearerr --entry-point=fclose --entry-point=printf --entry-point=vprintf --entry-point=fprintf --entry-point=vfprintf --entry-point=snprintf --entry-point=sprintf --entry-point=vsnprintf --entry-point=vsprintf --entry-point=asprintf --entry-point=vasprintf --entry-point=scanf --entry-point=vscanf --entry-point=fscanf --entry-point=vfscanf --entry-point=sscanf --entry-point=vsscanf --entry-point=feof --entry-point=ferror --entry-point=fflush --entry-point=fgetc --entry-point=fgets --entry-point=fopen --entry-point=fputc --entry-point=fputs --entry-point=fread --entry-point=fseek --entry-point=ftell --entry-point=fwrite --entry-point=getc --entry-point=getchar --entry-point=putc --entry-point=putchar --entry-point=puts --entry-point=remove --entry-point=rename --entry-point=stderr --entry-point=stdin --entry-point=stdout --entry-point=ungetc --entry-point=imaxabs --entry-point=imaxdiv --entry-point=strtoimax --entry-point=strtoumax --entry-point=clock --entry-point=clock_gettime --entry-point=timespec_get --entry-point=nanosleep --entry-point=wcslen --entry-point=wctob --entry-point=localeconv --entry-point=duplocale --entry-point=freelocale --entry-point=localeconv --entry-point=newlocale --entry-point=setlocale --entry-point=uselocale --entry-point=acos --entry-point=acosf --entry-point=acosh --entry-point=acoshf --entry-point=asin --entry-point=asinf --entry-point=asinh --entry-point=asinhf --entry-point=atan --entry-point=atan2 --entry-point=atan2f --entry-point=atan2l --entry-point=atanf --entry-point=atanh --entry-point=atanhf --entry-point=canonicalize --entry-point=canonicalizef --entry-point=canonicalizel --entry-point=cbrt --entry-point=cbrtf --entry-point=ceil --entry-point=ceilf --entry-point=ceill --entry-point=copysign --entry-point=copysignf --entry-point=copysignl --entry-point=cos --entry-point=cosf --entry-point=cosh --entry-point=coshf --entry-point=cospif --entry-point=ddivl --entry-point=dfmal --entry-point=dmull --entry-point=dsqrtl --entry-point=erf --entry-point=erff --entry-point=exp --entry-point=exp10 --entry-point=exp10f --entry-point=exp2 --entry-point=exp2f --entry-point=exp2m1f --entry-point=expf --entry-point=expm1 --entry-point=expm1f --entry-point=fabs --entry-point=fabsf --entry-point=fabsl --entry-point=fadd --entry-point=faddl --entry-point=fdim --entry-point=fdimf --entry-point=fdiml --entry-point=fdiv --entry-point=fdivl --entry-point=ffma --entry-point=ffmal --entry-point=floor --entry-point=floorf --entry-point=floorl --entry-point=fma --entry-point=fmaf --entry-point=fmax --entry-point=fmaxf --entry-point=fmaximum --entry-point=fmaximumf --entry-point=fmaximuml --entry-point=fmaximum_mag --entry-point=fmaximum_magf --entry-point=fmaximum_magl --entry-point=fmaximum_mag_num --entry-point=fmaximum_mag_numf --entry-point=fmaximum_mag_numl --entry-point=fmaximum_num --entry-point=fmaximum_numf --entry-point=fmaximum_numl --entry-point=fmaxl --entry-point=fmin --entry-point=fminf --entry-point=fminimum --entry-point=fminimumf --entry-point=fminimuml --entry-point=fminimum_mag --entry-point=fminimum_magf --entry-point=fminimum_magl --entry-point=fminimum_mag_num --entry-point=fminimum_mag_numf --entry-point=fminimum_mag_numl --entry-point=fminimum_num --entry-point=fminimum_numf --entry-point=fminimum_numl --entry-point=fminl --entry-point=fmod --entry-point=fmodf --entry-point=fmodl --entry-point=fmul --entry-point=fmull --entry-point=frexp --entry-point=frexpf --entry-point=frexpl --entry-point=fromfp --entry-point=fromfpf --entry-point=fromfpl --entry-point=fromfpx --entry-point=fromfpxf --entry-point=fromfpxl --entry-point=fsqrt --entry-point=fsqrtl --entry-point=fsub --entry-point=fsubl --entry-point=getpayload --entry-point=getpayloadf --entry-point=getpayloadl --entry-point=hypot --entry-point=hypotf --entry-point=ilogb --entry-point=ilogbf --entry-point=ilogbl --entry-point=isnan --entry-point=isnanf --entry-point=isnanl --entry-point=ldexp --entry-point=ldexpf --entry-point=ldexpl --entry-point=lgamma --entry-point=lgamma_r --entry-point=llogb --entry-point=llogbf --entry-point=llogbl --entry-point=llrint --entry-point=llrintf --entry-point=llrintl --entry-point=llround --entry-point=llroundf --entry-point=llroundl --entry-point=log --entry-point=log10 --entry-point=log10f --entry-point=log1p --entry-point=log1pf --entry-point=log2 --entry-point=log2f --entry-point=logb --entry-point=logbf --entry-point=logbl --entry-point=logf --entry-point=lrint --entry-point=lrintf --entry-point=lrintl --entry-point=lround --entry-point=lroundf --entry-point=lroundl --entry-point=modf --entry-point=modff --entry-point=modfl --entry-point=nan --entry-point=nanf --entry-point=nanl --entry-point=nearbyint --entry-point=nearbyintf --entry-point=nearbyintl --entry-point=nextafter --entry-point=nextafterf --entry-point=nextafterl --entry-point=nextdown --entry-point=nextdownf --entry-point=nextdownl --entry-point=nexttoward --entry-point=nexttowardf --entry-point=nexttowardl --entry-point=nextup --entry-point=nextupf --entry-point=nextupl --entry-point=pow --entry-point=powf --entry-point=powi --entry-point=powif --entry-point=remainder --entry-point=remainderf --entry-point=remainderl --entry-point=remquo --entry-point=remquof --entry-point=remquol --entry-point=rint --entry-point=rintf --entry-point=rintl --entry-point=roundeven --entry-point=roundevenf --entry-point=roundevenl --entry-point=round --entry-point=roundf --entry-point=roundl --entry-point=scalbln --entry-point=scalblnf --entry-point=scalblnl --entry-point=scalbn --entry-point=scalbnf --entry-point=scalbnl --entry-point=setpayload --entry-point=setpayloadf --entry-point=setpayloadl --entry-point=setpayloadsig --entry-point=setpayloadsigf --entry-point=setpayloadsigl --entry-point=sin --entry-point=sincos --entry-point=sincosf --entry-point=sinf --entry-point=sinh --entry-point=sinhf --entry-point=sinpif --entry-point=sqrt --entry-point=sqrtf --entry-point=sqrtl --entry-point=tan --entry-point=tanf --entry-point=tanh --entry-point=tanhf --entry-point=tgamma --entry-point=tgammaf --entry-point=totalorder --entry-point=totalorderf --entry-point=totalorderl --entry-point=totalordermag --entry-point=totalordermagf --entry-point=totalordermagl --entry-point=trunc --entry-point=truncf --entry-point=truncl --entry-point=ufromfp --entry-point=ufromfpf --entry-point=ufromfpl --entry-point=ufromfpx --entry-point=ufromfpxf --entry-point=ufromfpxl --entry-point=canonicalizef16 --entry-point=ceilf16 --entry-point=copysignf16 --entry-point=coshf16 --entry-point=exp10f16 --entry-point=exp10m1f16 --entry-point=exp2f16 --entry-point=expf16 --entry-point=f16add --entry-point=f16addf --entry-point=f16addl --entry-point=f16div --entry-point=f16divf --entry-point=f16divl --entry-point=f16fma --entry-point=f16fmaf --entry-point=f16fmal --entry-point=f16mul --entry-point=f16mulf --entry-point=f16mull --entry-point=f16sqrt --entry-point=f16sqrtf --entry-point=f16sqrtl --entry-point=f16sub --entry-point=f16subf --entry-point=f16subl --entry-point=fabsf16 --entry-point=fdimf16 --entry-point=floorf16 --entry-point=fmaxf16 --entry-point=fmaximum_mag_numf16 --entry-point=fmaximum_magf16 --entry-point=fmaximum_numf16 --entry-point=fmaximumf16 --entry-point=fminf16 --entry-point=fminimum_mag_numf16 --entry-point=fminimum_magf16 --entry-point=fminimum_numf16 --entry-point=fminimumf16 --entry-point=fmodf16 --entry-point=frexpf16 --entry-point=fromfpf16 --entry-point=fromfpxf16 --entry-point=getpayloadf16 --entry-point=ilogbf16 --entry-point=ldexpf16 --entry-point=llogbf16 --entry-point=llrintf16 --entry-point=llroundf16 --entry-point=log10f16 --entry-point=log2f16 --entry-point=logbf16 --entry-point=logf16 --entry-point=lrintf16 --entry-point=lroundf16 --entry-point=modff16 --entry-point=nanf16 --entry-point=nearbyintf16 --entry-point=nextafterf16 --entry-point=nextdownf16 --entry-point=nexttowardf16 --entry-point=nextupf16 --entry-point=remainderf16 --entry-point=remquof16 --entry-point=rintf16 --entry-point=roundevenf16 --entry-point=roundf16 --entry-point=scalblnf16 --entry-point=scalbnf16 --entry-point=setpayloadf16 --entry-point=setpayloadsigf16 --entry-point=sinhf16 --entry-point=sqrtf16 --entry-point=tanhf16 --entry-point=totalorderf16 --entry-point=totalordermagf16 --entry-point=truncf16 --entry-point=ufromfpf16 --entry-point=ufromfpxf16 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/errno.yaml
Traceback (most recent call last):
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py", line 15, in <module>
    from header import HeaderFile
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/header.py", line 27, in <module>
    {
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'
0.358 [595/31/75] Generating header stdint.h from /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/stdint.yaml
FAILED: /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/stdint.h 
cd /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/runtimes/runtimes-amdgcn-amd-amdhsa-bins && /usr/bin/python3.8 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py --output /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/stdint.h --depfile /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/stdint.h.d --write-if-changed --entry-point=__assert_fail --entry-point=isalnum --entry-point=isalnum_l --entry-point=isalpha --entry-point=isalpha_l --entry-point=isascii --entry-point=isblank --entry-point=isblank_l --entry-point=iscntrl --entry-point=iscntrl_l --entry-point=isdigit --entry-point=isdigit_l --entry-point=isgraph --entry-point=isgraph_l --entry-point=islower --entry-point=islower_l --entry-point=isprint --entry-point=isprint_l --entry-point=ispunct --entry-point=ispunct_l --entry-point=isspace --entry-point=isspace_l --entry-point=isupper --entry-point=isupper_l --entry-point=isxdigit --entry-point=isxdigit_l --entry-point=toascii --entry-point=tolower --entry-point=tolower_l --entry-point=toupper --entry-point=toupper_l --entry-point=memccpy --entry-point=memchr --entry-point=memcmp --entry-point=memcpy --entry-point=memmem --entry-point=memmove --entry-point=mempcpy --entry-point=memrchr --entry-point=memset --entry-point=stpcpy --entry-point=stpncpy --entry-point=strcasestr --entry-point=strcat --entry-point=strchr --entry-point=strchrnul --entry-point=strcmp --entry-point=strcoll --entry-point=strcoll_l --entry-point=strcpy --entry-point=strcspn --entry-point=strdup --entry-point=strerror --entry-point=strlcat --entry-point=strlcpy --entry-point=strlen --entry-point=strncat --entry-point=strncmp --entry-point=strncpy --entry-point=strndup --entry-point=strnlen --entry-point=strpbrk --entry-point=strrchr --entry-point=strsep --entry-point=strspn --entry-point=strstr --entry-point=strtok --entry-point=strtok_r --entry-point=strxfrm --entry-point=strxfrm_l --entry-point=bcmp --entry-point=bcopy --entry-point=bzero --entry-point=index --entry-point=rindex --entry-point=strcasecmp --entry-point=strncasecmp --entry-point=stdc_bit_ceil_uc --entry-point=stdc_bit_ceil_ui --entry-point=stdc_bit_ceil_ul --entry-point=stdc_bit_ceil_ull --entry-point=stdc_bit_ceil_us --entry-point=stdc_bit_floor_uc --entry-point=stdc_bit_floor_ui --entry-point=stdc_bit_floor_ul --entry-point=stdc_bit_floor_ull --entry-point=stdc_bit_floor_us --entry-point=stdc_bit_width_uc --entry-point=stdc_bit_width_ui --entry-point=stdc_bit_width_ul --entry-point=stdc_bit_width_ull --entry-point=stdc_bit_width_us --entry-point=stdc_count_ones_uc --entry-point=stdc_count_ones_ui --entry-point=stdc_count_ones_ul --entry-point=stdc_count_ones_ull --entry-point=stdc_count_ones_us --entry-point=stdc_count_zeros_uc --entry-point=stdc_count_zeros_ui --entry-point=stdc_count_zeros_ul --entry-point=stdc_count_zeros_ull --entry-point=stdc_count_zeros_us --entry-point=stdc_first_leading_one_uc --entry-point=stdc_first_leading_one_ui --entry-point=stdc_first_leading_one_ul --entry-point=stdc_first_leading_one_ull --entry-point=stdc_first_leading_one_us --entry-point=stdc_first_leading_zero_uc --entry-point=stdc_first_leading_zero_ui --entry-point=stdc_first_leading_zero_ul --entry-point=stdc_first_leading_zero_ull --entry-point=stdc_first_leading_zero_us --entry-point=stdc_first_trailing_one_uc --entry-point=stdc_first_trailing_one_ui --entry-point=stdc_first_trailing_one_ul --entry-point=stdc_first_trailing_one_ull --entry-point=stdc_first_trailing_one_us --entry-point=stdc_first_trailing_zero_uc --entry-point=stdc_first_trailing_zero_ui --entry-point=stdc_first_trailing_zero_ul --entry-point=stdc_first_trailing_zero_ull --entry-point=stdc_first_trailing_zero_us --entry-point=stdc_has_single_bit_uc --entry-point=stdc_has_single_bit_ui --entry-point=stdc_has_single_bit_ul --entry-point=stdc_has_single_bit_ull --entry-point=stdc_has_single_bit_us --entry-point=stdc_leading_ones_uc --entry-point=stdc_leading_ones_ui --entry-point=stdc_leading_ones_ul --entry-point=stdc_leading_ones_ull --entry-point=stdc_leading_ones_us --entry-point=stdc_leading_zeros_uc --entry-point=stdc_leading_zeros_ui --entry-point=stdc_leading_zeros_ul --entry-point=stdc_leading_zeros_ull --entry-point=stdc_leading_zeros_us --entry-point=stdc_trailing_ones_uc --entry-point=stdc_trailing_ones_ui --entry-point=stdc_trailing_ones_ul --entry-point=stdc_trailing_ones_ull --entry-point=stdc_trailing_ones_us --entry-point=stdc_trailing_zeros_uc --entry-point=stdc_trailing_zeros_ui --entry-point=stdc_trailing_zeros_ul --entry-point=stdc_trailing_zeros_ull --entry-point=stdc_trailing_zeros_us --entry-point=_Exit --entry-point=abort --entry-point=abs --entry-point=atexit --entry-point=atof --entry-point=atoi --entry-point=atol --entry-point=atoll --entry-point=bsearch --entry-point=div --entry-point=exit --entry-point=labs --entry-point=ldiv --entry-point=llabs --entry-point=lldiv --entry-point=qsort --entry-point=qsort_r --entry-point=rand --entry-point=srand --entry-point=strtod --entry-point=strtod_l --entry-point=strtof --entry-point=strtof_l --entry-point=strtol --entry-point=strtol_l --entry-point=strtold --entry-point=strtold_l --entry-point=strtoll --entry-point=strtoll_l --entry-point=strtoul --entry-point=strtoul_l --entry-point=strtoull --entry-point=strtoull_l --entry-point=at_quick_exit --entry-point=quick_exit --entry-point=getenv --entry-point=system --entry-point=aligned_alloc --entry-point=calloc --entry-point=free --entry-point=malloc --entry-point=realloc --entry-point=errno --entry-point=clearerr --entry-point=fclose --entry-point=printf --entry-point=vprintf --entry-point=fprintf --entry-point=vfprintf --entry-point=snprintf --entry-point=sprintf --entry-point=vsnprintf --entry-point=vsprintf --entry-point=asprintf --entry-point=vasprintf --entry-point=scanf --entry-point=vscanf --entry-point=fscanf --entry-point=vfscanf --entry-point=sscanf --entry-point=vsscanf --entry-point=feof --entry-point=ferror --entry-point=fflush --entry-point=fgetc --entry-point=fgets --entry-point=fopen --entry-point=fputc --entry-point=fputs --entry-point=fread --entry-point=fseek --entry-point=ftell --entry-point=fwrite --entry-point=getc --entry-point=getchar --entry-point=putc --entry-point=putchar --entry-point=puts --entry-point=remove --entry-point=rename --entry-point=stderr --entry-point=stdin --entry-point=stdout --entry-point=ungetc --entry-point=imaxabs --entry-point=imaxdiv --entry-point=strtoimax --entry-point=strtoumax --entry-point=clock --entry-point=clock_gettime --entry-point=timespec_get --entry-point=nanosleep --entry-point=wcslen --entry-point=wctob --entry-point=localeconv --entry-point=duplocale --entry-point=freelocale --entry-point=localeconv --entry-point=newlocale --entry-point=setlocale --entry-point=uselocale --entry-point=acos --entry-point=acosf --entry-point=acosh --entry-point=acoshf --entry-point=asin --entry-point=asinf --entry-point=asinh --entry-point=asinhf --entry-point=atan --entry-point=atan2 --entry-point=atan2f --entry-point=atan2l --entry-point=atanf --entry-point=atanh --entry-point=atanhf --entry-point=canonicalize --entry-point=canonicalizef --entry-point=canonicalizel --entry-point=cbrt --entry-point=cbrtf --entry-point=ceil --entry-point=ceilf --entry-point=ceill --entry-point=copysign --entry-point=copysignf --entry-point=copysignl --entry-point=cos --entry-point=cosf --entry-point=cosh --entry-point=coshf --entry-point=cospif --entry-point=ddivl --entry-point=dfmal --entry-point=dmull --entry-point=dsqrtl --entry-point=erf --entry-point=erff --entry-point=exp --entry-point=exp10 --entry-point=exp10f --entry-point=exp2 --entry-point=exp2f --entry-point=exp2m1f --entry-point=expf --entry-point=expm1 --entry-point=expm1f --entry-point=fabs --entry-point=fabsf --entry-point=fabsl --entry-point=fadd --entry-point=faddl --entry-point=fdim --entry-point=fdimf --entry-point=fdiml --entry-point=fdiv --entry-point=fdivl --entry-point=ffma --entry-point=ffmal --entry-point=floor --entry-point=floorf --entry-point=floorl --entry-point=fma --entry-point=fmaf --entry-point=fmax --entry-point=fmaxf --entry-point=fmaximum --entry-point=fmaximumf --entry-point=fmaximuml --entry-point=fmaximum_mag --entry-point=fmaximum_magf --entry-point=fmaximum_magl --entry-point=fmaximum_mag_num --entry-point=fmaximum_mag_numf --entry-point=fmaximum_mag_numl --entry-point=fmaximum_num --entry-point=fmaximum_numf --entry-point=fmaximum_numl --entry-point=fmaxl --entry-point=fmin --entry-point=fminf --entry-point=fminimum --entry-point=fminimumf --entry-point=fminimuml --entry-point=fminimum_mag --entry-point=fminimum_magf --entry-point=fminimum_magl --entry-point=fminimum_mag_num --entry-point=fminimum_mag_numf --entry-point=fminimum_mag_numl --entry-point=fminimum_num --entry-point=fminimum_numf --entry-point=fminimum_numl --entry-point=fminl --entry-point=fmod --entry-point=fmodf --entry-point=fmodl --entry-point=fmul --entry-point=fmull --entry-point=frexp --entry-point=frexpf --entry-point=frexpl --entry-point=fromfp --entry-point=fromfpf --entry-point=fromfpl --entry-point=fromfpx --entry-point=fromfpxf --entry-point=fromfpxl --entry-point=fsqrt --entry-point=fsqrtl --entry-point=fsub --entry-point=fsubl --entry-point=getpayload --entry-point=getpayloadf --entry-point=getpayloadl --entry-point=hypot --entry-point=hypotf --entry-point=ilogb --entry-point=ilogbf --entry-point=ilogbl --entry-point=isnan --entry-point=isnanf --entry-point=isnanl --entry-point=ldexp --entry-point=ldexpf --entry-point=ldexpl --entry-point=lgamma --entry-point=lgamma_r --entry-point=llogb --entry-point=llogbf --entry-point=llogbl --entry-point=llrint --entry-point=llrintf --entry-point=llrintl --entry-point=llround --entry-point=llroundf --entry-point=llroundl --entry-point=log --entry-point=log10 --entry-point=log10f --entry-point=log1p --entry-point=log1pf --entry-point=log2 --entry-point=log2f --entry-point=logb --entry-point=logbf --entry-point=logbl --entry-point=logf --entry-point=lrint --entry-point=lrintf --entry-point=lrintl --entry-point=lround --entry-point=lroundf --entry-point=lroundl --entry-point=modf --entry-point=modff --entry-point=modfl --entry-point=nan --entry-point=nanf --entry-point=nanl --entry-point=nearbyint --entry-point=nearbyintf --entry-point=nearbyintl --entry-point=nextafter --entry-point=nextafterf --entry-point=nextafterl --entry-point=nextdown --entry-point=nextdownf --entry-point=nextdownl --entry-point=nexttoward --entry-point=nexttowardf --entry-point=nexttowardl --entry-point=nextup --entry-point=nextupf --entry-point=nextupl --entry-point=pow --entry-point=powf --entry-point=powi --entry-point=powif --entry-point=remainder --entry-point=remainderf --entry-point=remainderl --entry-point=remquo --entry-point=remquof --entry-point=remquol --entry-point=rint --entry-point=rintf --entry-point=rintl --entry-point=roundeven --entry-point=roundevenf --entry-point=roundevenl --entry-point=round --entry-point=roundf --entry-point=roundl --entry-point=scalbln --entry-point=scalblnf --entry-point=scalblnl --entry-point=scalbn --entry-point=scalbnf --entry-point=scalbnl --entry-point=setpayload --entry-point=setpayloadf --entry-point=setpayloadl --entry-point=setpayloadsig --entry-point=setpayloadsigf --entry-point=setpayloadsigl --entry-point=sin --entry-point=sincos --entry-point=sincosf --entry-point=sinf --entry-point=sinh --entry-point=sinhf --entry-point=sinpif --entry-point=sqrt --entry-point=sqrtf --entry-point=sqrtl --entry-point=tan --entry-point=tanf --entry-point=tanh --entry-point=tanhf --entry-point=tgamma --entry-point=tgammaf --entry-point=totalorder --entry-point=totalorderf --entry-point=totalorderl --entry-point=totalordermag --entry-point=totalordermagf --entry-point=totalordermagl --entry-point=trunc --entry-point=truncf --entry-point=truncl --entry-point=ufromfp --entry-point=ufromfpf --entry-point=ufromfpl --entry-point=ufromfpx --entry-point=ufromfpxf --entry-point=ufromfpxl --entry-point=canonicalizef16 --entry-point=ceilf16 --entry-point=copysignf16 --entry-point=coshf16 --entry-point=exp10f16 --entry-point=exp10m1f16 --entry-point=exp2f16 --entry-point=expf16 --entry-point=f16add --entry-point=f16addf --entry-point=f16addl --entry-point=f16div --entry-point=f16divf --entry-point=f16divl --entry-point=f16fma --entry-point=f16fmaf --entry-point=f16fmal --entry-point=f16mul --entry-point=f16mulf --entry-point=f16mull --entry-point=f16sqrt --entry-point=f16sqrtf --entry-point=f16sqrtl --entry-point=f16sub --entry-point=f16subf --entry-point=f16subl --entry-point=fabsf16 --entry-point=fdimf16 --entry-point=floorf16 --entry-point=fmaxf16 --entry-point=fmaximum_mag_numf16 --entry-point=fmaximum_magf16 --entry-point=fmaximum_numf16 --entry-point=fmaximumf16 --entry-point=fminf16 --entry-point=fminimum_mag_numf16 --entry-point=fminimum_magf16 --entry-point=fminimum_numf16 --entry-point=fminimumf16 --entry-point=fmodf16 --entry-point=frexpf16 --entry-point=fromfpf16 --entry-point=fromfpxf16 --entry-point=getpayloadf16 --entry-point=ilogbf16 --entry-point=ldexpf16 --entry-point=llogbf16 --entry-point=llrintf16 --entry-point=llroundf16 --entry-point=log10f16 --entry-point=log2f16 --entry-point=logbf16 --entry-point=logf16 --entry-point=lrintf16 --entry-point=lroundf16 --entry-point=modff16 --entry-point=nanf16 --entry-point=nearbyintf16 --entry-point=nextafterf16 --entry-point=nextdownf16 --entry-point=nexttowardf16 --entry-point=nextupf16 --entry-point=remainderf16 --entry-point=remquof16 --entry-point=rintf16 --entry-point=roundevenf16 --entry-point=roundf16 --entry-point=scalblnf16 --entry-point=scalbnf16 --entry-point=setpayloadf16 --entry-point=setpayloadsigf16 --entry-point=sinhf16 --entry-point=sqrtf16 --entry-point=tanhf16 --entry-point=totalorderf16 --entry-point=totalordermagf16 --entry-point=truncf16 --entry-point=ufromfpf16 --entry-point=ufromfpxf16 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/stdint.yaml
Traceback (most recent call last):
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py", line 15, in <module>
    from header import HeaderFile
  File "/home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/header.py", line 27, in <module>
    {
TypeError: unsupported operand type(s) for |: 'dict' and 'dict'
0.358 [595/30/76] Generating header assert.h from /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/assert.yaml
FAILED: /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/assert.h 
cd /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/runtimes/runtimes-amdgcn-amd-amdhsa-bins && /usr/bin/python3.8 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/libc/utils/hdrgen/main.py --output /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/assert.h --depfile /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.build/include/amdgcn-amd-amdhsa/assert.h.d --write-if-changed --entry-point=__assert_fail --entry-point=isalnum --entry-point=isalnum_l --entry-point=isalpha --entry-point=isalpha_l --entry-point=isascii --entry-point=isblank --entry-point=isblank_l --entry-point=iscntrl --entry-point=iscntrl_l --entry-point=isdigit --entry-point=isdigit_l --entry-point=isgraph --entry-point=isgraph_l --entry-point=islower --entry-point=islower_l --entry-point=isprint --entry-point=isprint_l --entry-point=ispunct --entry-point=ispunct_l --entry-point=isspace --entry-point=isspace_l --entry-point=isupper --entry-point=isupper_l --entry-point=isxdigit --entry-point=isxdigit_l --entry-point=toascii --entry-point=tolower --entry-point=tolower_l --entry-point=toupper --entry-point=toupper_l --entry-point=memccpy --entry-point=memchr --entry-point=memcmp --entry-point=memcpy --entry-point=memmem --entry-point=memmove --entry-point=mempcpy --entry-point=memrchr --entry-point=memset --entry-point=stpcpy --entry-point=stpncpy --entry-point=strcasestr --entry-point=strcat --entry-point=strchr --entry-point=strchrnul --entry-point=strcmp --entry-point=strcoll --entry-point=strcoll_l --entry-point=strcpy --entry-point=strcspn --entry-point=strdup --entry-point=strerror --entry-point=strlcat --entry-point=strlcpy --entry-point=strlen --entry-point=strncat --entry-point=strncmp --entry-point=strncpy --entry-point=strndup --entry-point=strnlen --entry-point=strpbrk --entry-point=strrchr --entry-point=strsep --entry-point=strspn --entry-point=strstr --entry-point=strtok --entry-point=strtok_r --entry-point=strxfrm --entry-point=strxfrm_l --entry-point=bcmp --entry-point=bcopy --entry-point=bzero --entry-point=index --entry-point=rindex --entry-point=strcasecmp --entry-point=strncasecmp --entry-point=stdc_bit_ceil_uc --entry-point=stdc_bit_ceil_ui --entry-point=stdc_bit_ceil_ul --entry-point=stdc_bit_ceil_ull --entry-point=stdc_bit_ceil_us --entry-point=stdc_bit_floor_uc --entry-point=stdc_bit_floor_ui --entry-point=stdc_bit_floor_ul --entry-point=stdc_bit_floor_ull --entry-point=stdc_bit_floor_us --entry-point=stdc_bit_width_uc --entry-point=stdc_bit_width_ui --entry-point=stdc_bit_width_ul --entry-point=stdc_bit_width_ull --entry-point=stdc_bit_width_us --entry-point=stdc_count_ones_uc --entry-point=stdc_count_ones_ui --entry-point=stdc_count_ones_ul --entry-point=stdc_count_ones_ull --entry-point=stdc_count_ones_us --entry-point=stdc_count_zeros_uc --entry-point=stdc_count_zeros_ui --entry-point=stdc_count_zeros_ul --entry-point=stdc_count_zeros_ull --entry-point=stdc_count_zeros_us --entry-point=stdc_first_leading_one_uc --entry-point=stdc_first_leading_one_ui --entry-point=stdc_first_leading_one_ul --entry-point=stdc_first_leading_one_ull --entry-point=stdc_first_leading_one_us --entry-point=stdc_first_leading_zero_uc --entry-point=stdc_first_leading_zero_ui --entry-point=stdc_first_leading_zero_ul --entry-point=stdc_first_leading_zero_ull --entry-point=stdc_first_leading_zero_us --entry-point=stdc_first_trailing_one_uc --entry-point=stdc_first_trailing_one_ui --entry-point=stdc_first_trailing_one_ul --entry-point=stdc_first_trailing_one_ull --entry-point=stdc_first_trailing_one_us --entry-point=stdc_first_trailing_zero_uc --entry-point=stdc_first_trailing_zero_ui --entry-point=stdc_first_trailing_zero_ul --entry-point=stdc_first_trailing_zero_ull --entry-point=stdc_first_trailing_zero_us --entry-point=stdc_has_single_bit_uc --entry-point=stdc_has_single_bit_ui --entry-point=stdc_has_single_bit_ul --entry-point=stdc_has_single_bit_ull --entry-point=stdc_has_single_bit_us --entry-point=stdc_leading_ones_uc --entry-point=stdc_leading_ones_ui --entry-point=stdc_leading_ones_ul --entry-point=stdc_leading_ones_ull --entry-point=stdc_leading_ones_us --entry-point=stdc_leading_zeros_uc --entry-point=stdc_leading_zeros_ui --entry-point=stdc_leading_zeros_ul --entry-point=stdc_leading_zeros_ull --entry-point=stdc_leading_zeros_us --entry-point=stdc_trailing_ones_uc --entry-point=stdc_trailing_ones_ui --entry-point=stdc_trailing_ones_ul --entry-point=stdc_trailing_ones_ull --entry-point=stdc_trailing_ones_us --entry-point=stdc_trailing_zeros_uc --entry-point=stdc_trailing_zeros_ui --entry-point=stdc_trailing_zeros_ul --entry-point=stdc_trailing_zeros_ull --entry-point=stdc_trailing_zeros_us --entry-point=_Exit --entry-point=abort --entry-point=abs --entry-point=atexit --entry-point=atof --entry-point=atoi --entry-point=atol --entry-point=atoll --entry-point=bsearch --entry-point=div --entry-point=exit --entry-point=labs --entry-point=ldiv --entry-point=llabs --entry-point=lldiv --entry-point=qsort --entry-point=qsort_r --entry-point=rand --entry-point=srand --entry-point=strtod --entry-point=strtod_l --entry-point=strtof --entry-point=strtof_l --entry-point=strtol --entry-point=strtol_l --entry-point=strtold --entry-point=strtold_l --entry-point=strtoll --entry-point=strtoll_l --entry-point=strtoul --entry-point=strtoul_l --entry-point=strtoull --entry-point=strtoull_l --entry-point=at_quick_exit --entry-point=quick_exit --entry-point=getenv --entry-point=system --entry-point=aligned_alloc --entry-point=calloc --entry-point=free --entry-point=malloc --entry-point=realloc --entry-point=errno --entry-point=clearerr --entry-point=fclose --entry-point=printf --entry-point=vprintf --entry-point=fprintf --entry-point=vfprintf --entry-point=snprintf --entry-point=sprintf --entry-point=vsnprintf --entry-point=vsprintf --entry-point=asprintf --entry-point=vasprintf --entry-point=scanf --entry-point=vscanf --entry-point=fscanf --entry-point=vfscanf --entry-point=sscanf --entry-point=vsscanf --entry-point=feof --entry-point=ferror --entry-point=fflush --entry-point=fgetc --entry-point=fgets --entry-point=fopen --entry-point=fputc --entry-point=fputs --entry-point=fread --entry-point=fseek --entry-point=ftell --entry-point=fwrite --entry-point=getc --entry-point=getchar --entry-point=putc --entry-point=putchar --entry-point=puts --entry-point=remove --entry-point=rename --entry-point=stderr --entry-point=stdin --entry-point=stdout --entry-point=ungetc --entry-point=imaxabs --entry-point=imaxdiv --entry-point=strtoimax --entry-point=strtoumax --entry-point=clock --entry-point=clock_gettime --entry-point=timespec_get --entry-point=nanosleep --entry-point=wcslen --entry-point=wctob --entry-point=localeconv --entry-point=duplocale --entry-point=freelocale --entry-point=localeconv --entry-point=newlocale --entry-point=setlocale --entry-point=uselocale --entry-point=acos --entry-point=acosf --entry-point=acosh --entry-point=acoshf --entry-point=asin --entry-point=asinf --entry-point=asinh --entry-point=asinhf --entry-point=atan --entry-point=atan2 --entry-point=atan2f --entry-point=atan2l --entry-point=atanf --entry-point=atanh --entry-point=atanhf --entry-point=canonicalize --entry-point=canonicalizef --entry-point=canonicalizel --entry-point=cbrt --entry-point=cbrtf --entry-point=ceil --entry-point=ceilf --entry-point=ceill --entry-point=copysign --entry-point=copysignf --entry-point=copysignl --entry-point=cos --entry-point=cosf --entry-point=cosh --entry-point=coshf --entry-point=cospif --entry-point=ddivl --entry-point=dfmal --entry-point=dmull --entry-point=dsqrtl --entry-point=erf --entry-point=erff --entry-point=exp --entry-point=exp10 --entry-point=exp10f --entry-point=exp2 --entry-point=exp2f --entry-point=exp2m1f --entry-point=expf --entry-point=expm1 --entry-point=expm1f --entry-point=fabs --entry-point=fabsf --entry-point=fabsl --entry-point=fadd --entry-point=faddl --entry-point=fdim --entry-point=fdimf --entry-point=fdiml --entry-point=fdiv --entry-point=fdivl --entry-point=ffma --entry-point=ffmal --entry-point=floor --entry-point=floorf --entry-point=floorl --entry-point=fma --entry-point=fmaf --entry-point=fmax --entry-point=fmaxf --entry-point=fmaximum --entry-point=fmaximumf --entry-point=fmaximuml --entry-point=fmaximum_mag --entry-point=fmaximum_magf --entry-point=fmaximum_magl --entry-point=fmaximum_mag_num --entry-point=fmaximum_mag_numf --entry-point=fmaximum_mag_numl --entry-point=fmaximum_num --entry-point=fmaximum_numf --entry-point=fmaximum_numl --entry-point=fmaxl --entry-point=fmin --entry-point=fminf --entry-point=fminimum --entry-point=fminimumf --entry-point=fminimuml --entry-point=fminimum_mag --entry-point=fminimum_magf --entry-point=fminimum_magl --entry-point=fminimum_mag_num --entry-point=fminimum_mag_numf --entry-point=fminimum_mag_numl --entry-point=fminimum_num --entry-point=fminimum_numf --entry-point=fminimum_numl --entry-point=fminl --entry-point=fmod --entry-point=fmodf --entry-point=fmodl --entry-point=fmul --entry-point=fmull --entry-point=frexp --entry-point=frexpf --entry-point=frexpl --entry-point=fromfp --entry-point=fromfpf --entry-point=fromfpl --entry-point=fromfpx --entry-point=fromfpxf --entry-point=fromfpxl --entry-point=fsqrt --entry-point=fsqrtl --entry-point=fsub --entry-point=fsubl --entry-point=getpayload --entry-point=getpayloadf --entry-point=getpayloadl --entry-point=hypot --entry-point=hypotf --entry-point=ilogb --entry-point=ilogbf --entry-point=ilogbl --entry-point=isnan --entry-point=isnanf --entry-point=isnanl --entry-point=ldexp --entry-point=ldexpf --entry-point=ldexpl --entry-point=lgamma --entry-point=lgamma_r --entry-point=llogb --entry-point=llogbf --entry-point=llogbl --entry-point=llrint --entry-point=llrintf --entry-point=llrintl --entry-point=llround --entry-point=llroundf --entry-point=llroundl --entry-point=log --entry-point=log10 --entry-point=log10f --entry-point=log1p --entry-point=log1pf --entry-point=log2 --entry-point=log2f --entry-point=logb --entry-point=logbf --entry-point=logbl --entry-point=logf --entry-point=lrint --entry-point=lrintf --entry-point=lrintl --entry-point=lround --entry-point=lroundf --entry-point=lroundl --entry-point=modf --entry-point=modff --entry-point=modfl --entry-point=nan --entry-point=nanf --entry-point=nanl --entry-point=nearbyint --entry-point=nearbyintf --entry-point=nearbyintl --entry-point=nextafter --entry-point=nextafterf --entry-point=nextafterl --entry-point=nextdown --entry-point=nextdownf --entry-point=nextdownl --entry-point=nexttoward --entry-point=nexttowardf --entry-point=nexttowardl --entry-point=nextup --entry-point=nextupf --entry-point=nextupl --entry-point=pow --entry-point=powf --entry-point=powi --entry-point=powif --entry-point=remainder --entry-point=remainderf --entry-point=remainderl --entry-point=remquo --entry-point=remquof --entry-point=remquol --entry-point=rint --entry-point=rintf --entry-point=rintl --entry-point=roundeven --entry-point=roundevenf --entry-point=roundevenl --entry-point=round --entry-point=roundf --entry-point=roundl --entry-point=scalbln --entry-point=scalblnf --entry-point=scalblnl --entry-point=scalbn --entry-point=scalbnf --entry-point=scalbnl --entry-point=setpayload --entry-point=setpayloadf --entry-point=setpayloadl --entry-point=setpayloadsig --entry-point=setpayloadsigf --entry-point=setpayloadsigl --entry-point=sin --entry-point=sincos --entry-point=sincosf --entry-point=sinf --entry-point=sinh --entry-point=sinhf --entry-point=sinpif --entry-point=sqrt --entry-point=sqrtf --entry-point=sqrtl --entry-point=tan --entry-point=tanf --entry-point=tanh --entry-point=tanhf --entry-point=tgamma --entry-point=tgammaf --entry-point=totalorder --entry-point=totalorderf --entry-point=totalorderl --entry-point=totalordermag --entry-point=totalordermagf --entry-point=totalordermagl --entry-point=trunc --entry-point=truncf --entry-point=truncl --entry-point=ufromfp --entry-point=ufromfpf --entry-point=ufromfpl --entry-point=ufromfpx --entry-point=ufromfpxf --entry-point=ufromfpxl --entry-point=canonicalizef16 --entry-point=ceilf16 --entry-point=copysignf16 --entry-point=coshf16 --entry-point=exp10f16 --entry-point=exp10m1f16 --entry-point=exp2f16 --entry-point=expf16 --entry-point=f16add --entry-point=f16addf --entry-point=f16addl --entry-point=f16div --entry-point=f16divf --entry-point=f16divl --entry-point=f16fma --entry-point=f16fmaf --entry-point=f16fmal --entry-point=f16mul --entry-point=f16mulf --entry-point=f16mull --entry-point=f16sqrt --entry-point=f16sqrtf --entry-point=f16sqrtl --entry-point=f16sub --entry-point=f16subf --entry-point=f16subl --entry-point=fabsf16 --entry-point=fdimf16 --entry-point=floorf16 --entry-point=fmaxf16 --entry-point=fmaximum_mag_numf16 --entry-point=fmaximum_magf16 --entry-point=fmaximum_numf16 --entry-point=fmaximumf16 --entry-point=fminf16 --entry-point=fminimum_mag_numf16 --entry-point=fminimum_magf16 --entry-point=fminimum_numf16 --entry-point=fminimumf16 --entry-point=fmodf16 --entry-point=frexpf16 --entry-point=fromfpf16 --entry-point=fromfpxf16 --entry-point=getpayloadf16 --entry-point=ilogbf16 --entry-point=ldexpf16 --entry-point=llogbf16 --entry-point=llrintf16 --entry-point=llroundf16 --entry-point=log10f16 --entry-point=log2f16 --entry-point=logbf16 --entry-point=logf16 --entry-point=lrintf16 --entry-point=lroundf16 --entry-point=modff16 --entry-point=nanf16 --entry-point=nearbyintf16 --entry-point=nextafterf16 --entry-point=nextdownf16 --entry-point=nexttowardf16 --entry-point=nextupf16 --entry-point=remainderf16 --entry-point=remquof16 --entry-point=rintf16 --entry-point=roundevenf16 --entry-point=roundf16 --entry-point=scalblnf16 --entry-point=scalbnf16 --entry-point=setpayloadf16 --entry-point=setpayloadsigf16 --entry-point=sinhf16 --entry-point=sqrtf16 --entry-point=tanhf16 --entry-point=totalorderf16 --entry-point=totalordermagf16 --entry-point=truncf16 --entry-point=ufromfpf16 --entry-point=ufromfpxf16 /home/ompworker/bbot/openmp-offload-libc-amdgpu-runtime/llvm.src/runtimes/../libc/include/assert.yaml
Traceback (most recent call last):

@jplehr
Copy link
Contributor

jplehr commented Feb 14, 2025

Hi, this broke our libc on GPU build.
I'd appreciate if you look into it and if it takes more time, please revert.
If you need assistance, let me know!

@jhuber6
Copy link
Contributor

jhuber6 commented Feb 14, 2025

The documentation states that we require Python 3.8, which is what the buildbot uses https://libc.llvm.org/dev/header_generation.html#instructions.
The :| feature was only added in 3.9 https://docs.python.org/3/whatsnew/3.9.html#dictionary-merge-update-operators. This should be reverted and then made to be compatible with 3.8 or update the build instructions and the bots.

@frobtech
Copy link
Contributor Author

If folks don't mind, I'll push a forward fix to be compatible with Python 3.8.

@jhuber6
Copy link
Contributor

jhuber6 commented Feb 14, 2025

If folks don't mind, I'll push a forward fix to be compatible with Python 3.8.

Works for me, I'll review it if you tag me.

sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Feb 24, 2025
…lvm#127251)

With this, the `types` list in YAML files should only be used to
list the types that a standard specifies should be in that header
per se.  All the types referenced in function signatures will be
collected automatically.
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