[llvm] [ConstraintElim] Use constraints from bounded memory accesses (PR #155253)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 3 06:02:04 PDT 2025


dtcxzyw wrote:

> Hi @dtcxzyw
> 
> The following starts crashing with this patch:
> 
> ```
> opt -passes=constraint-elimination bbi-110220.ll -o /dev/null
> ```
> 
> It crashes with:
> 
> ```
> opt: ../lib/IR/Constants.cpp:963: static Constant *llvm::ConstantInt::get(Type *, const APInt &): Assertion `C->getType() == Ty->getScalarType() && "ConstantInt type doesn't match the type implied by its value!"' failed.
> PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
> Stack dump:
> 0.	Program arguments: build-all/bin/opt -passes=constraint-elimination bbi-110220.ll -o /dev/null
> 1.	Running pass "function(constraint-elimination)" on module "bbi-110220.ll"
> 2.	Running pass "constraint-elimination" on function "main"
>  #0 0x0000558e6828d286 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x47f7286)
>  #1 0x0000558e6828a815 llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x47f4815)
>  #2 0x0000558e6828e409 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
>  #3 0x00007f52f8c29990 __restore_rt (/lib64/libpthread.so.0+0x12990)
>  #4 0x00007f52f65c952f raise (/lib64/libc.so.6+0x4e52f)
>  #5 0x00007f52f659ce65 abort (/lib64/libc.so.6+0x21e65)
>  #6 0x00007f52f659cd39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
>  #7 0x00007f52f65c1e86 (/lib64/libc.so.6+0x46e86)
>  #8 0x0000558e68369aad llvm::ConstantInt::get(llvm::Type*, llvm::APInt const&) (build-all/bin/opt+0x48d3aad)
>  #9 0x0000558e69aec61a getConstraintFromMemoryAccess(llvm::GetElementPtrInst&, unsigned long, llvm::CmpPredicate&, llvm::Value*&, llvm::Value*&, llvm::DataLayout const&, llvm::TargetLibraryInfo const&) ConstraintElimination.cpp:0:0
> #10 0x0000558e69aebf89 (anonymous namespace)::State::addInfoFor(llvm::BasicBlock&)::$_0::operator()(llvm::Value*, llvm::Type*) const ConstraintElimination.cpp:0:0
> #11 0x0000558e69ae4c93 eliminateConstraints(llvm::Function&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::ScalarEvolution&, llvm::OptimizationRemarkEmitter&, llvm::TargetLibraryInfo&) ConstraintElimination.cpp:0:0
> #12 0x0000558e69ae3b3d llvm::ConstraintEliminationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x604db3d)
> #13 0x0000558e69748abd llvm::detail::PassModel<llvm::Function, llvm::ConstraintEliminationPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
> #14 0x0000558e684a5ba5 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x4a0fba5)
> #15 0x0000558e6974a3fd llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
> #16 0x0000558e684aa4ae llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x4a144ae)
> #17 0x0000558e696d90fd llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) NewPMDriver.cpp:0:0
> #18 0x0000558e684a4875 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x4a0e875)
> #19 0x0000558e696d1e40 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool, bool) (build-all/bin/opt+0x5c3be40)
> #20 0x0000558e6822e578 optMain (build-all/bin/opt+0x4798578)
> #21 0x00007f52f65b57e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
> #22 0x0000558e6822bfae _start (build-all/bin/opt+0x4795fae)
> Abort (core dumped)
> ```
> 
> [bbi-110220.ll.gz](https://github.com/user-attachments/files/22114841/bbi-110220.ll.gz)

I will post a fix later. Thanks!

https://github.com/llvm/llvm-project/pull/155253


More information about the llvm-commits mailing list