AliveToolkit / alive2

Automatic verification of LLVM optimizations
MIT License
769 stars 97 forks source link

Assertion failed: (high >= low && high < bits()), function extract, file expr.cpp, line 1809. #977

Closed regehr closed 10 months ago

regehr commented 10 months ago
Johns-MacBook-Pro:tmp regehr$ cat src.ll
; ModuleID = 'M2'
source_filename = "M2"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-linux-gnu"

define void @fcmp_ult_v16f16(ptr %0, ptr %1, ptr %2) {
  %4 = load <16 x half>, ptr %0, align 32
  %5 = load <16 x half>, ptr %1, align 32
  %6 = fcmp ult <16 x half> %4, %5
  %7 = sext <16 x i1> %6 to <16 x i16>
  store <16 x i16> %7, ptr %2, align 32
  ret void
}
Johns-MacBook-Pro:tmp regehr$ cat reduced.ll 
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-linux-gnu"

define void @fcmp_ult_v16f16(ptr %0, ptr %1, ptr %2) {
arm_tv_entry:
  %a2_1 = load i128, ptr null, align 1
  ret void
}
Johns-MacBook-Pro:tmp regehr$ ~/alive2-regehr/build/alive-tv src.ll reduced.ll --tgt-is-asm

----------------------------------------
define void @fcmp_ult_v16f16(ptr %#0, ptr %#1, ptr %#2) {
#3:
  %#4 = load <16 x half>, ptr %#0, align 32
  %#5 = load <16 x half>, ptr %#1, align 32
  %#6 = fcmp ult <16 x half> %#4, %#5
  %#7 = sext <16 x i1> %#6 to <16 x i16>
  store <16 x i16> %#7, ptr %#2, align 32
  ret void
}
=>
define void @fcmp_ult_v16f16(ptr %#0, ptr %#1, ptr %#2) asm {
arm_tv_entry:
  %a2_1 = load i128, ptr null, align 1
  ret void
}
Assertion failed: (high >= low && high < bits()), function extract, file expr.cpp, line 1809.
 #0 0x00000001087ca84c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x14284c)
 #1 0x00000001087c8584 llvm::sys::RunSignalHandlers() (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x140584)
 #2 0x00000001087caefc SignalHandler(int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x142efc)
 #3 0x000000018db93a24 (/usr/lib/system/libsystem_platform.dylib+0x180467a24)
 #4 0x000000018db64cc0 (/usr/lib/system/libsystem_pthread.dylib+0x180438cc0)
 #5 0x000000018da74a40 (/usr/lib/system/libsystem_c.dylib+0x180348a40)
 #6 0x000000018da73d30 (/usr/lib/system/libsystem_c.dylib+0x180347d30)
 #7 0x00000001047b1560 smt::expr::extract(unsigned int, unsigned int, unsigned int) const (.cold.2) (/Users/regehr/alive2-regehr/build/alive-tv+0x1000e1560)
 #8 0x000000010478ad98 smt::expr::extract(unsigned int, unsigned int, unsigned int) const (/Users/regehr/alive2-regehr/build/alive-tv+0x1000bad98)
 #9 0x00000001047792f8 IR::StateValue::trunc(unsigned int, unsigned int) const (/Users/regehr/alive2-regehr/build/alive-tv+0x1000a92f8)
#10 0x0000000104751208 IR::Memory::load(IR::Pointer const&, IR::Type const&, std::__1::set<smt::expr, std::__1::less<smt::expr>, std::__1::allocator<smt::expr>>&, unsigned long long) (/Users/regehr/alive2-regehr/build/alive-tv+0x100081208)
#11 0x0000000104751ae4 IR::Memory::load(smt::expr const&, IR::Type const&, unsigned long long) (/Users/regehr/alive2-regehr/build/alive-tv+0x100081ae4)
#12 0x000000010472cdc0 IR::Load::toSMT(IR::State&) const (/Users/regehr/alive2-regehr/build/alive-tv+0x10005cdc0)
#13 0x000000010476449c IR::State::exec(IR::Value const&) (/Users/regehr/alive2-regehr/build/alive-tv+0x10009449c)
#14 0x00000001047ae7f8 util::sym_exec(IR::State&) (/Users/regehr/alive2-regehr/build/alive-tv+0x1000de7f8)
#15 0x00000001047a07c0 tools::TransformVerify::exec() const (/Users/regehr/alive2-regehr/build/alive-tv+0x1000d07c0)
#16 0x00000001047a0d24 tools::TransformVerify::verify() const (/Users/regehr/alive2-regehr/build/alive-tv+0x1000d0d24)
#17 0x00000001046e2004 (anonymous namespace)::verify(llvm::Function&, llvm::Function&, llvm::TargetLibraryInfoWrapperPass&, smt::smt_initializer&, std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, bool) (/Users/regehr/alive2-regehr/build/alive-tv+0x100012004)
#18 0x00000001046e11ac llvm_util::Verifier::compareFunctions(llvm::Function&, llvm::Function&) (/Users/regehr/alive2-regehr/build/alive-tv+0x1000111ac)
#19 0x00000001046db2ec main (/Users/regehr/alive2-regehr/build/alive-tv+0x10000b2ec)
#20 0x000000018d7e90e0 
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.  Program arguments: /Users/regehr/alive2-regehr/build/alive-tv src.ll reduced.ll --tgt-is-asm
Abort trap: 6
Johns-MacBook-Pro:tmp regehr$