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/src/__support/FPUtil/FPBits.h:111:14: error: no matching function for call to bit_cast #74258

Closed
petrhosek opened this issue Dec 3, 2023 · 10 comments · Fixed by #74837, #74862 or #75063

Comments

@petrhosek
Copy link
Member

I encountered the following error when trying to compile LLVM libc for baremetal riscv32 target:

/usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/./bin/clang++ --target=riscv32-unknown-elf -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/local/google/home/phosek/llvm/llvm-project/libc -isystem /usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/include
/riscv32-unknown-elf --target=riscv32-unknown-elf -march=rv32imafc -mabi=ilp32f -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstrin
g-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -ffunction-sections -fdata-sections -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/runtimes/runtimes-riscv32-unknown-elf-bins=../../../../ -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/= -no-canonical-prefixes -O2 -g -DNDEBUG -std=gnu++17 --target=riscv32-unknown-elf -O2 -fpie -ffreestanding -fno-builtin -f
no-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -Wall -Wextra -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -DLIBC_COPT_PUBLIC_PACKAGING -UNDEBUG -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.
cpp.obj -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj -c /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp                                                                                                                                                                         
In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:10:                                                                                                            
In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:12:                                                                                                                                                                                                                                                                                                                     
/usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/FPBits.h:111:14: error: no matching function for call to 'bit_cast'                                                                        
  111 |       : bits(cpp::bit_cast<UIntType>(x)) {}                                                       
      |              ^~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                                                                                                                                                                                                                                                              
/usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:22:13: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::FPBits<long double>::FPBits<long double, 0>' requested here                                                                                                                                                                                
   22 |   FPBits<T> bits(x);                                                                              
      |             ^                                                                                     
/usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:16:18: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::abs<long double, 0>' requested here                                                                                                                                                                                                                    
   16 |   return fputil::abs(x);                                                                                                                                                                                     
      |                  ^                                                                                                                                                                                           
/usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/CPP/bit.h:36:26: note: candidate template ignored: substitution failure [with To = UIntType, From = long double, $2 = cpp::enable_if_t<sizeof(UIntType) == sizeof(long double)>]: implicit instantiation of undefined template '__llvm_libc_18_0_0_git::cpp::enable_if<false>'                                                                                         
   36 | LIBC_INLINE constexpr To bit_cast(const From &from) {                                                                                                                                                        
      |                          ^                                                                                                                                                                                                                                                                                                                                                                                                        
1 error generated.
@petrhosek petrhosek added the libc label Dec 3, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Dec 3, 2023

@llvm/issue-subscribers-libc

Author: Petr Hosek (petrhosek)

I encountered the following error when trying to compile LLVM libc for baremetal riscv32 target: ``` /usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/./bin/clang++ --target=riscv32-unknown-elf -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/local/google/home/phosek/llvm/llvm-project/libc -isystem /usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/include /riscv32-unknown-elf --target=riscv32-unknown-elf -march=rv32imafc -mabi=ilp32f -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstrin g-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -ffunction-sections -fdata-sections -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/runtimes/runtimes-riscv32-unknown-elf-bins=../../../../ -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/= -no-canonical-prefixes -O2 -g -DNDEBUG -std=gnu++17 --target=riscv32-unknown-elf -O2 -fpie -ffreestanding -fno-builtin -f no-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -Wall -Wextra -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -DLIBC_COPT_PUBLIC_PACKAGING -UNDEBUG -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl. cpp.obj -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj -c /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:10: In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:12: /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/FPBits.h:111:14: error: no matching function for call to 'bit_cast' 111 | : bits(cpp::bit_cast<UIntType>(x)) {} | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:22:13: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::FPBits<long double>::FPBits<long double, 0>' requested here 22 | FPBits<T> bits(x); | ^ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:16:18: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::abs<long double, 0>' requested here 16 | return fputil::abs(x); | ^ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/CPP/bit.h:36:26: note: candidate template ignored: substitution failure [with To = UIntType, From = long double, $2 = cpp::enable_if_t<sizeof(UIntType) == sizeof(long double)>]: implicit instantiation of undefined template '__llvm_libc_18_0_0_git::cpp::enable_if<false>' 36 | LIBC_INLINE constexpr To bit_cast(const From &from) { | ^ 1 error generated. ```

@llvmbot
Copy link
Collaborator

llvmbot commented Dec 4, 2023

@llvm/issue-subscribers-backend-risc-v

Author: Petr Hosek (petrhosek)

I encountered the following error when trying to compile LLVM libc for baremetal riscv32 target: ``` /usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/./bin/clang++ --target=riscv32-unknown-elf -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/local/google/home/phosek/llvm/llvm-project/libc -isystem /usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/include /riscv32-unknown-elf --target=riscv32-unknown-elf -march=rv32imafc -mabi=ilp32f -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstrin g-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -ffunction-sections -fdata-sections -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/build/baremetal/runtimes/runtimes-riscv32-unknown-elf-bins=../../../../ -ffile-prefix-map=/usr/local/google/home/phosek/llvm/llvm-project/= -no-canonical-prefixes -O2 -g -DNDEBUG -std=gnu++17 --target=riscv32-unknown-elf -O2 -fpie -ffreestanding -fno-builtin -f no-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -Wall -Wextra -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -DLIBC_COPT_PUBLIC_PACKAGING -UNDEBUG -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl. cpp.obj -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.fabsl.dir/fabsl.cpp.obj -c /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:10: In file included from /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:12: /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/FPBits.h:111:14: error: no matching function for call to 'bit_cast' 111 | : bits(cpp::bit_cast<UIntType>(x)) {} | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:22:13: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::FPBits<long double>::FPBits<long double, 0>' requested here 22 | FPBits<T> bits(x); | ^ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/math/generic/fabsl.cpp:16:18: note: in instantiation of function template specialization '__llvm_libc_18_0_0_git::fputil::abs<long double, 0>' requested here 16 | return fputil::abs(x); | ^ /usr/local/google/home/phosek/llvm/llvm-project/libc/src/__support/CPP/bit.h:36:26: note: candidate template ignored: substitution failure [with To = UIntType, From = long double, $2 = cpp::enable_if_t<sizeof(UIntType) == sizeof(long double)>]: implicit instantiation of undefined template '__llvm_libc_18_0_0_git::cpp::enable_if<false>' 36 | LIBC_INLINE constexpr To bit_cast(const From &from) { | ^ 1 error generated. ```

@gchatelet
Copy link
Contributor

gchatelet commented Dec 4, 2023

On rv32, long double is IEEE754 binary 128 floating point number aka quadruple float.
The UIntType for it is UInt128 from:

#if !defined(__SIZEOF_INT128__)
using UInt128 = LIBC_NAMESPACE::cpp::UInt<128>;
using Int128 = LIBC_NAMESPACE::cpp::Int<128>;
#else
using UInt128 = __uint128_t;
using Int128 = __int128_t;
#endif

Because rv32 does not natively support __uint128_t this gets redirected to our software implementation via using UInt128 = LIBC_NAMESPACE::cpp::UInt<128>;

UInt is not trivially constructible because of zero initialized array here (the braces)

uint64_t val[WORDCOUNT]{};

The bit_cast implementation requires that the destination type is trivially constructible because the content of the object will be overridden - which may leave the object in a bogus state (resources may have been acquired during construction).

So I see two options here:

  • We make UInt and Int behave like fundamental types (no zero initialization, default constructed objects are in an undefined state).
  • We add another constructor in FPBit that kicks in when UIntType is UInt<N> and we explicitly initialize its internal val state using the memcpy semantics.

edit: We have the same issue here

: bits(cpp::bit_cast<UIntType>(x)) {

@michaelrj-google
Copy link
Contributor

I think making UInt trivially constructible makes the most sense, since that will make it better match the behavior of other integer types.

gchatelet added a commit to gchatelet/llvm-project that referenced this issue Dec 8, 2023
gchatelet added a commit that referenced this issue Dec 8, 2023
Fix #74258
This is a reland of #74837, the error went unnoticed because it compiles
fine on
clang-16 but not on clang-12 which is the version used on the buildbots.

The fix was to explicitly initialize `BigInt` variables in `constexpr`
operations: `BigInt<Bits, Signed> result(0);` instead of `BigInt<Bits,
Signed> result;`
@gchatelet
Copy link
Contributor

So unfortunately I think having UInt be bit_cast-able is a dead end.
For BigInt to be usable in constexpr expressions such as array initialization the val member needs to "mem-initialized".
Full GCC error:

/redacted/git/llvm-project/libc/src/math/generic/expm1.cpp: In function ‘__llvm_libc_18_0_0_git::Float128 __llvm_libc_18_0_0_git::poly_approx_f128(const Float128&)’:
/redacted/git/llvm-project/libc/src/math/generic/expm1.cpp:117:3: error: ‘constexpr __llvm_libc_18_0_0_git::cpp::BigInt<Bits, Signed>::BigInt(const uint64_t (&)[N]) [with long unsigned int N = 2; typename __llvm_libc_18_0_0_git::cpp::enable_if<(N <= WORDCOUNT), int>::type <anonymous> = 0; long unsigned int Bits = 128; bool Signed = false; uint64_t = long unsigned int]’ called in a constant expression
  117 |   };
      |   ^
In file included from /redacted/git/llvm-project/libc/src/__support/UInt128.h:12,
                 from /redacted/git/llvm-project/libc/src/__support/FPUtil/FloatProperties.h:12,
                 from /redacted/git/llvm-project/libc/src/__support/FPUtil/FPBits.h:17,
                 from /redacted/git/llvm-project/libc/src/math/generic/explogxf.h:17,
                 from /redacted/git/llvm-project/libc/src/math/generic/expm1.cpp:11:
/redacted/git/llvm-project/libc/src/__support/UInt.h:68:25: note: ‘constexpr __llvm_libc_18_0_0_git::cpp::BigInt<Bits, Signed>::BigInt(const uint64_t (&)[N]) [with long unsigned int N = 2; typename __llvm_libc_18_0_0_git::cpp::enable_if<(N <= WORDCOUNT), int>::type <anonymous> = 0; long unsigned int Bits = 128; bool Signed = false; uint64_t = long unsigned int]’ is not usable as a ‘constexpr’ function because:
   68 |   LIBC_INLINE constexpr BigInt(const uint64_t (&nums)[N]) {
      |                         ^~~~~~
/redacted/git/llvm-project/libc/src/__support/UInt.h:68:25: error: member ‘__llvm_libc_18_0_0_git::cpp::BigInt<128, false>::val’ must be initialized by mem-initializer in ‘constexpr’ constructor
/redacted/git/llvm-project/libc/src/__support/UInt.h:34:12: note: declared here
   34 |   uint64_t val[WORDCOUNT];
      |            ^~~

And if it's "mem-initialized" it is not trivially constructible anymore and so not bit_cast-able.
Clang is fine though but I think it's a legitimate error. To be honest, I also think that bit_casting for BigInt is dangerous as it requires careful control of its layout and blocks its evolution. I'll revert my patches and think about a better solution.

@gchatelet gchatelet reopened this Dec 8, 2023
gchatelet added a commit to gchatelet/llvm-project that referenced this issue Dec 8, 2023
This reverts the following commits:
 - a539a09
 - 31316b3

Rationale for revert: llvm#74258 (comment)
@lntue
Copy link
Contributor

lntue commented Dec 8, 2023

@gchatelet can you try to build the whole project or that part with C++20 standard for gcc to see if it fixes the problems?

gchatelet added a commit that referenced this issue Dec 8, 2023
@gchatelet
Copy link
Contributor

@gchatelet can you try to build the whole project or that part with C++20 standard for gcc to see if it fixes the problems?

I just reverted it but let me try your suggestion. Are you referring to this part of the standard?

@lntue
Copy link
Contributor

lntue commented Dec 8, 2023

@gchatelet can you try to build the whole project or that part with C++20 standard for gcc to see if it fixes the problems?

I just reverted it but let me try your suggestion. Are you referring to this part of the standard?

Yes, I think that's the one blocking your attempt.

@gchatelet
Copy link
Contributor

I'm running in a lot of errors when building with GCC-13 and C++20. I first thought it was because of poor compiler support but it seems it's well supported.
I didn't spot the one above although it might just be that compilation stops before reaching it.
Sample errors:

/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h: In function ‘void* _mm_malloc(size_t, size_t)’:
/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h:42:12: error: ‘malloc’ was not declared in this scope
   42 |     return malloc (__size);
      |            ^~~~~~
/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h:28:1: note: ‘malloc’ is defined in header ‘<cstdlib>’; did you forget to ‘#include <cstdlib>’?
   27 | #include <stdlib.h>
  +++ |+#include <cstdlib>
   28 | 
/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h: In function ‘void _mm_free(void*)’:
/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h:54:3: error: ‘free’ was not declared in this scope
   54 |   free (__ptr);
      |   ^~~~
/usr/lib/gcc/x86_64-linux-gnu/13/include/mm_malloc.h:54:3: note: ‘free’ is defined in header ‘<cstdlib>’; did you forget to ‘#include <cstdlib>’?

In file included from /redacted/git/llvm-project/libc/src/stdlib/atof.cpp:10:
/redacted/git/llvm-project/libc/src/stdlib/atof.cpp:16:28: error: ‘double __llvm_libc_18_0_0_git::atof(const char*)’ aliased to external symbol ‘atof’
   16 | LLVM_LIBC_FUNCTION(double, atof, (const char *str)) {
      |                            ^~~~
/redacted/git/llvm-project/libc/src/__support/common.h:28:34: note: in definition of macro ‘LLVM_LIBC_FUNCTION_IMPL’
   28 |   decltype(LIBC_NAMESPACE::name) name [[gnu::alias(#name)]];                   \
      |                                  ^~~~
/redacted/git/llvm-project/libc/src/stdlib/atof.cpp:16:1: note: in expansion of macro ‘LLVM_LIBC_FUNCTION’
   16 | LLVM_LIBC_FUNCTION(double, atof, (const char *str)) {
      | ^~~~~~~~~~~~~~~~~~
/redacted/git/llvm-project/libc/src/stdlib/atof.cpp:16:28: warning: ‘double __llvm_libc_18_0_0_git::atof(const char*)’ specifies less restrictive attributes than its target ‘double atof(const char*)’: ‘leaf’, ‘nonnull’, ‘nothrow’, ‘pure’ [-Wmissing-attributes]
   16 | LLVM_LIBC_FUNCTION(double, atof, (const char *str)) {
      |                            ^~~~
/redacted/git/llvm-project/libc/src/__support/common.h:28:34: note: in definition of macro ‘LLVM_LIBC_FUNCTION_IMPL’
   28 |   decltype(LIBC_NAMESPACE::name) name [[gnu::alias(#name)]];                   \
      |                                  ^~~~
/redacted/git/llvm-project/libc/src/stdlib/atof.cpp:16:1: note: in expansion of macro ‘LLVM_LIBC_FUNCTION’
   16 | LLVM_LIBC_FUNCTION(double, atof, (const char *str)) {
      | ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/features.h:490,
                 from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
                 from /usr/include/limits.h:26,
                 from /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h:205,
                 from /usr/lib/gcc/x86_64-linux-gnu/13/include/syslimits.h:7,
                 from /usr/lib/gcc/x86_64-linux-gnu/13/include/limits.h:34,
                 from /redacted/git/llvm-project/libc/src/__support/CPP/limits.h:16,
                 from /redacted/git/llvm-project/libc/src/__support/str_to_float.h:12,
                 from /redacted/git/llvm-project/libc/src/stdlib/atof.cpp:11:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:25:1: note: ‘double __llvm_libc_18_0_0_git::atof(const char*)’ target declared here
   25 | __NTH (atof (const char *__nptr))
      | ^~~~~

@lntue
Copy link
Contributor

lntue commented Dec 8, 2023

Yes, I also see them when trying gcc with -Werror. Those are only warnings that you can skip for now. Probably we will need to clean up some of those extra attributes some time soon.

gchatelet added a commit to gchatelet/llvm-project that referenced this issue Dec 11, 2023
gchatelet added a commit that referenced this issue Dec 21, 2023
gnoliyil pushed a commit to gnoliyil/fuchsia that referenced this issue Jan 27, 2024
…cast-able to compatible types" (#74887)

This reverts the following commits:
 - a539a090009378ecfcfbfaaa280eeac8f5b9d695
 - 31316b3f8511d659cc14ebc72fb2b226f78478a9

Rationale for revert:
llvm/llvm-project#74258 (comment)

GitOrigin-RevId: 6ebf5b81158724c0d5de02bc191993deaa637284
Original-Revision: f272d26c79de7764c122dc4791e09ca4952ea857
Roller-URL: https://ci.chromium.org/b/8762210348997478881
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I57c504572ddd028abbd875332de10bcc367e6eb3
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/958212
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment