[llvm] [ConstantTime][LLVM] Add llvm.ct.select intrinsic with generic SelectionDAG lowering (PR #166702)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 19 20:13:07 PDT 2026
dtcxzyw wrote:
The following correctness issue was found by [llvm-hackme](https://github.com/dtcxzyw/llvm-hackme).
<!-- llvm-hackme-state: bug_found -->
<!-- llvm-hackme-baseline: c6672a6fdf1469d818d0ac8aaa2c31a0f18e729a -->
<!-- llvm-hackme-head-sha: f4383a332170afc874a6fd6113a42d83a46889d9 -->
<!-- llvm-hackme-patch-sha256: 9aea1600e5a0f54d5fc16e6c873d40f6910a91bea75c2faddefa46051d7bd083 -->
<!-- llvm-hackme-kind: crash -->
This comment is generated by an automated correctness checking service designed to help identify critical correctness bugs (opt crashes or Alive2 miscompilations) and improve PR review efficiency under limited reviewer bandwidth.
The reproducer was generated by LLM.
This bug is a regression introduced by this PR. It does not reproduce on the baseline commit.
## Reproducer
**Kind**: crash
**IR Reproducer**:
```llvm
; RUN: opt -passes=instcombine<no-verify-fixpoint> -S
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
```
**Stacktrace**:
```
Unhandled type
UNREACHABLE executed at ../llvm-project-pr/llvm/lib/IR/Intrinsics.cpp:133!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /llvm-hackme/work/llvm-hackme/llvm-build-pr/bin/opt -S -o /dev/null /tmp/tmployw0apd.ll -passes=instcombine<no-verify-fixpoint>
#0 0x00007ffff7e19c62 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/Support/Unix/Signals.inc:928:22
#1 0x00007ffff7e1689c llvm::sys::RunSignalHandlers() /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/Support/Signals.cpp:108:20
#2 0x00007ffff7e16aa5 SignalHandler(int, siginfo_t*, void*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/Support/Unix/Signals.inc:474:14
#3 0x00007ffff7a19520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007ffff7a6d9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007ffff7a19476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007ffff79ff7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007ffff7d1cfde (/llvm-hackme/work/llvm-hackme/llvm-build-pr/bin/../lib/libLLVMSupport.so.24.0git+0x11cfde)
#8 0x00007fffee045b33 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_check_length(unsigned long, unsigned long, char const*) const /usr/include/c++/11/bits/basic_string.h:331:24
#9 0x00007fffee045b33 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*, unsigned long) /usr/include/c++/11/bits/basic_string.h:1245:17
#10 0x00007fffee045b33 llvm::operator+=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::StringRef) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/include/llvm/ADT/StringRef.h:942:23
#11 0x00007fffee045b33 getMangledTypeStr(llvm::Type*, bool&) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/Intrinsics.cpp:97:33
#12 0x00007fffee045ef4 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long) /usr/include/c++/11/bits/basic_string.h:1960:19
#13 0x00007fffee045ef4 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::insert(unsigned long, char const*) /usr/include/c++/11/bits/basic_string.h:1728:22
#14 0x00007fffee045ef4 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) /usr/include/c++/11/bits/basic_string.h:6196:23
#15 0x00007fffee045ef4 getIntrinsicNameImpl(unsigned int, llvm::ArrayRef<llvm::Type*>, llvm::Module*, llvm::FunctionType*, bool) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/Intrinsics.cpp:190:19
#16 0x00007fffee046856 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const /usr/include/c++/11/bits/basic_string.h:927:16
#17 0x00007fffee046856 llvm::StringRef::StringRef(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/include/llvm/ADT/StringRef.h:104:44
#18 0x00007fffee046856 llvm::Intrinsic::remangleIntrinsicFunction(llvm::Function*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/Intrinsics.cpp:1427:12
#19 0x00007fffedf0894c upgradeIntrinsicFunction1(llvm::Function*, llvm::Function*&, bool) (.constprop.0) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/AutoUpgrade.cpp:1979:59
#20 0x00007fffedf0ba45 llvm::UpgradeIntrinsicFunction(llvm::Function*, llvm::Function*&, bool) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/AutoUpgrade.cpp:2002:7
#21 0x00007fffedf1ff65 llvm::UpgradeCallsToIntrinsic(llvm::Function*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IR/AutoUpgrade.cpp:5961:3
#22 0x00007ffff197eee6 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>::operator++() /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/include/llvm/ADT/ilist_iterator.h:187:13
#23 0x00007ffff197eee6 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>::operator++(int) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/include/llvm/ADT/ilist_iterator.h:197:5
#24 0x00007ffff197eee6 llvm::early_inc_iterator_impl<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false> >::operator*() /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/include/llvm/ADT/STLExtras.h:598:22
#25 0x00007ffff197eee6 llvm::LLParser::validateEndOfModule(bool) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/AsmParser/LLParser.cpp:472:51
#26 0x00007ffff19c350b llvm::LLParser::Run(bool, llvm::function_ref<std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef, llvm::StringRef)>) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/AsmParser/LLParser.cpp:91:34
#27 0x00007ffff19c84cc parseAssemblyInto(llvm::MemoryBufferRef, llvm::Module*, llvm::ModuleSummaryIndex*, llvm::SMDiagnostic&, llvm::SlotMapping*, bool, llvm::function_ref<std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef, llvm::StringRef)>, llvm::AsmParserContext*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/AsmParser/Parser.cpp:34:10
#28 0x00007ffff19c86b0 llvm::parseAssemblyInto(llvm::MemoryBufferRef, llvm::Module*, llvm::ModuleSummaryIndex*, llvm::SMDiagnostic&, llvm::SlotMapping*, llvm::function_ref<std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef, llvm::StringRef)>, llvm::AsmParserContext*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/AsmParser/Parser.cpp:45:29
#29 0x00007ffff19c86b0 llvm::parseAssembly(llvm::MemoryBufferRef, llvm::SMDiagnostic&, llvm::LLVMContext&, llvm::SlotMapping*, llvm::function_ref<std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef, llvm::StringRef)>, llvm::AsmParserContext*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/AsmParser/Parser.cpp:57:24
#30 0x00007ffff6448153 std::_Function_base::~_Function_base() /usr/include/c++/11/bits/std_function.h:243:11
#31 0x00007ffff6448153 std::function<std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef, llvm::StringRef)>::~function() /usr/include/c++/11/bits/std_function.h:334:11
#32 0x00007ffff6448153 llvm::parseIR(llvm::MemoryBufferRef, llvm::SMDiagnostic&, llvm::LLVMContext&, llvm::ParserCallbacks, llvm::AsmParserContext*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IRReader/IRReader.cpp:90:53
#33 0x00007ffff644891e llvm::parseIRFile(llvm::StringRef, llvm::SMDiagnostic&, llvm::LLVMContext&, llvm::ParserCallbacks, llvm::AsmParserContext*) /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/lib/IRReader/IRReader.cpp:108:31
#34 0x00007ffff7f9fc9a std::__uniq_ptr_impl<llvm::Module, std::default_delete<llvm::Module> >::release() /usr/include/c++/11/bits/unique_ptr.h:187:10
#35 0x00007ffff7f9fc9a std::__uniq_ptr_impl<llvm::Module, std::default_delete<llvm::Module> >::operator=(std::__uniq_ptr_impl<llvm::Module, std::default_delete<llvm::Module> >&&) /usr/include/c++/11/bits/unique_ptr.h:167:7
#36 0x00007ffff7f9fc9a std::__uniq_ptr_data<llvm::Module, std::default_delete<llvm::Module>, true, true>::operator=(std::__uniq_ptr_data<llvm::Module, std::default_delete<llvm::Module>, true, true>&&) /usr/include/c++/11/bits/unique_ptr.h:212:24
#37 0x00007ffff7f9fc9a std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >::operator=(std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >&&) /usr/include/c++/11/bits/unique_ptr.h:371:19
#38 0x00007ffff7f9fc9a optMain /llvm-hackme/work/llvm-hackme/llvm-build-pr/../llvm-project-pr/llvm/tools/opt/optdriver.cpp:596:51
#39 0x00007ffff7a00d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#40 0x00007ffff7a00e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#41 0x0000555555555095 _start (/llvm-hackme/work/llvm-hackme/llvm-build-pr/bin/opt+0x1095)
```
**Baseline Revision**: `c6672a6fdf1469d818d0ac8aaa2c31a0f18e729a`
**PR Head SHA**: `f4383a332170afc874a6fd6113a42d83a46889d9`
**Patch SHA256**: `9aea1600e5a0f54d5fc16e6c873d40f6910a91bea75c2faddefa46051d7bd083`
https://github.com/llvm/llvm-project/pull/166702
More information about the llvm-commits
mailing list