Open elliottslaughter opened 1 year ago
Running be8952140264510c16b60cc21561fbc19f105158 with LLVM 16.
./cconv_more.t:600: scalar test failed for N=10, {uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2,uint8_t_2} -> uint8: error code 164
Comparing the signatures:
define zeroext i8 @cbb10(i64 %x1.coerce, i64 %x2.coerce, i64 %x3.coerce, i64 %x4.coerce, i64 %x5.coerce, i64 %x6.coerce, i64 %x7.coerce, i64 %x8.coerce, i64 %x9.coerce, i64 %x10.coerce) #0 { define internal i8 @"$tbb10"(i16 %0, i16 %1, i16 %2, i16 %3, i16 %4, i16 %5, i16 %6, i16 %7, i16 %8, i16 %9) #2 {
Looks like Clang is promoting the arguments to i64 which may result in extra padding if we pass them on the stack?
i64
For posterity, I confirmed that it also fails on LLVM 11, 13, 14, and 15. (So not sensitive to LLVM version, and not a regression.)
Running be8952140264510c16b60cc21561fbc19f105158 with LLVM 16.
Comparing the signatures:
Looks like Clang is promoting the arguments to
i64
which may result in extra padding if we pass them on the stack?