[PATCH] D108049: [InstCombine] Extend canonicalizeClampLike to handle truncated inputs

Arthur Eubanks via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 29 16:33:59 PDT 2021


aeubanks added a comment.

this is causing crashes, e.g.

  $ cat reduced.ll 
  define i8 @f(i32 %value, i8 %call.i) {
  entry:
    %cmp.i = icmp slt i32 %value, 0
    %cond.i = select i1 %cmp.i, i8 %call.i, i8 0
    %cmp.i.i = icmp ult i32 %value, 256
    %conv4 = trunc i32 %value to i8
    %cond = select i1 %cmp.i.i, i8 %conv4, i8 %cond.i
    ret i8 %cond
  }
  $ ./build/rel/bin/opt -passes=instcombine -disable-output reduced.ll
  opt: ../../llvm/lib/IR/Constants.cpp:2304: static llvm::Constant *llvm::ConstantExpr::get(unsigned int, llvm::Constant *, llvm::Constant *, unsigned int, llvm::Type *): Assertion `C1->getType() == C2->getType() && "Operand types in binary constant expression should match"' failed.
  PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
  Stack dump:
  0.      Program arguments: ./build/rel/bin/opt -passes=instcombine -disable-output reduced.ll
   #0 0x0000000001f1a023 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Support/Unix/Signals.inc:565:13
   #1 0x0000000001f17e9e llvm::sys::RunSignalHandlers() /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Support/Signals.cpp:98:18
   #2 0x0000000001f1a38f SignalHandler(int) /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Support/Unix/Signals.inc:407:1
   #3 0x00007f45c95198e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x138e0)
   #4 0x00007f45c8ff3e71 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
   #5 0x00007f45c8fdd536 abort ./stdlib/abort.c:81:7
   #6 0x00007f45c8fdd41f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
   #7 0x00007f45c8fdd41f _nl_load_domain ./intl/loadmsgcat.c:970:34
   #8 0x00007f45c8fec7f2 (/lib/x86_64-linux-gnu/libc.so.6+0x357f2)
   #9 0x0000000001ba8eed llvm::ConstantExpr::get(unsigned int, llvm::Constant*, llvm::Constant*, unsigned int, llvm::Type*) /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/IR/Constants.cpp:0:0
  #10 0x0000000002929f7e canonicalizeClampLike /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:1409:29
  #11 0x0000000002929f7e llvm::InstCombinerImpl::foldSelectInstWithICmp(llvm::SelectInst&, llvm::ICmpInst*) /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:1535:18
  #12 0x000000000292f3b2 llvm::InstCombinerImpl::visitSelectInst(llvm::SelectInst&) /usr/local/google/home/aeubanks/repos/llvm-project/build/rel/../../llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:2994:31


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108049/new/

https://reviews.llvm.org/D108049



More information about the llvm-commits mailing list