<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/71548>71548</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] Assertion failure "getting fast-math flag on invalid op"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:crash,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
annamthomas
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
annamthomas
</td>
</tr>
</table>
<pre>
After 060de415af3, a latent bug in instCombine got exposed.
cat trunk.ll
```
; ModuleID = 'trunk.ll'
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-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"
define void @"test"() {
always_continue:
%0 = load atomic double, ptr addrspace(1) null unordered, align 8
%1 = load atomic i32, ptr addrspace(1) null unordered, align 4
%2 = sitofp i32 %1 to double
%res.i = call noundef double @llvm.minimum.f64(double %0, double %2) #4
%3 = fcmp ult double %res.i, 0.000000e+00
%.not16 = icmp eq i32 %1, 0
%or.cond45 = or i1 %3, %.not16
call void @llvm.assume(i1 %or.cond45)
ret void
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.minimum.f64(double, double)
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write)
declare void @llvm.assume(i1 noundef)
```
`opt -passes=instcombine trunk.ll` causes:
```
Assertion failed: (isa<FPMathOperator>(this) && "getting fast-math flag on invalid op"), function hasNoInfs, file Instruction.cpp, line 342.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /Users/anna/llvm-project-fork/installRA/bin/opt -passes=instcombine ip.ll
#0 0x0000000103221627 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x101905627)
#1 0x000000010321f875 llvm::sys::RunSignalHandlers() (/Users/anna/llvm-project-fork/installRA/bin/opt+0x101903875)
#2 0x0000000103221cc0 SignalHandler(int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x101905cc0)
#3 0x00007ff80cbbe5ed (/usr/lib/system/libsystem_platform.dylib+0x7ff8004255ed)
#4 0x000000010551a138 llvm::Any::TypeId<llvm::LazyCallGraph::SCC const*>::Id (/Users/anna/llvm-project-fork/installRA/bin/opt+0x103bfe138)
#5 0x00007ff80cab7b45 (/usr/lib/system/libsystem_c.dylib+0x7ff80031eb45)
#6 0x00007ff80cab6e5e (/usr/lib/system/libsystem_c.dylib+0x7ff80031de5e)
#7 0x00000001041d0d53 llvm::Instruction::hasNoInfs() const (.cold.3) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1028b4d53)
#8 0x000000010292523e llvm::Instruction::hasNoInfs() const (/Users/anna/llvm-project-fork/installRA/bin/opt+0x10100923e)
#9 0x00000001020cca0e simplifyIntrinsic(llvm::CallBase*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007b0a0e)
#10 0x00000001020cb08e llvm::simplifyCall(llvm::CallBase*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007af08e)
#11 0x00000001020ce873 simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007b2873)
#12 0x00000001020c76c1 simplifyWithOpReplaced(llvm::Value*, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, bool, llvm::SmallVectorImpl<llvm::Instruction*>*, unsigned int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007ab6c1)
#13 0x00000001020c758e simplifyWithOpReplaced(llvm::Value*, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, bool, llvm::SmallVectorImpl<llvm::Instruction*>*, unsigned int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007ab58e)
#14 0x00000001020d2ba7 simplifyAndOrWithICmpEq(unsigned int, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007b6ba7)
#15 0x00000001020c3cf8 simplifyOrInst(llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x1007a7cf8)
#16 0x0000000102c7b917 llvm::InstCombinerImpl::visitOr(llvm::BinaryOperator&) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x10135f917)
#17 0x0000000102c53d5c llvm::InstCombinerImpl::run() (/Users/anna/llvm-project-fork/installRA/bin/opt+0x101337d5c)
#18 0x0000000102c56814 combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, unsigned int, bool, llvm::LoopInfo*) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x10133a814)
#19 0x0000000102c56001 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x10133a001)
#20 0x000000010357ebf2 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Users/anna/llvm-project-fork/installRA/bin/opt+0x101c62bf2)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWd9z27jx_2voF4w0IMBfevCDLMffr2eS2rXT62MGBJYSahDgAaBt3V_fAUTRpOz07nK6TqfTTMKQwO7is59d7JIQc05uNcBlkl8lhDCtWet3pmUuISTJry9Y73fGXk4mLmoj9pfrxoNFuMACsjRnDU3IBjGkmAftUd1vkdRIauc3pq2lBrQ1HsFrZxyIJUrwdYLXhytnHnnb66elUsN4gYe_h0d6hb4Y0Su4vUYJvUYJKUcFUh6EPLNb8EgwzxTbm94PkgQWbULXsOhIiRO6piRewmM6fwx3RRYvCznepKRK6Dol1aKp8HCn41BxVC-yxWMclmF40ZHjRDX8o-QwRwKnU7Teyk7BEelrVXwrskWvn7R50Qsldf-62Op-1DpcBTSBz2cjBUoynBDiwfkgRKqErFBSXh0EmXphe_eNG-2l7iGhgwGEEpLjuKoyTCDmTSs5EqavFYQwdt4iJoR1HeOQkCoNZnWvFOq1sQIsiBhtJbcaVROj6TujkpLfbTGbWCTRopPeNF0wdljFmyPaN0kLbimjNGdKIW16LaAZ5AJRSj23y1Zq2fbtsimyhFTHSZLjsPzbI4lEEjqFQqPxhrcd6pWfCMeVgz5e4vgHEnKF8UR1qY1Pi6gvgz78PPoS9Saixi650SLLo7SxSKZx8SA3WjrKR0-PiRD9Y871bWD4oDZaS8jqqGTBR50hp8rraXKFvXbTa-6l0WjtvXUJXSNtwko1409Im8YCIG3cXvPI8ovUArkOeK-YZ4GTF6mUBd9bjVpojd0npNJGwwhCAFfMwm8JzltcRu0_hvQjcFIzzsE5WStoIdQL9GKlfw_4u1wP6faG8aSEHQdN59GiY86BS-h1qI98qI9jRSsw4qyPAusT7anJtXNgo_MNkwpEAB2wOJbQzc39F-Z3dx1Y5o1N6KeEVH4n3SGti4QUoeBswXupt6hhzi9a5neoUWyLTCjcz0xJgUwX68oqRKE5kr1j7i_mVjcujkoF6FY7b_s4u-RdF8ZV8IlmZHlAe__50_rxE3J93UqPWGwQFjpjfdjMO--76C65ScjNVvpdXy-5aRNyE5ge_lt01vwDuE_IjXSuB5eQG8S0QFJz1QtAfgeIW-Z2KCSAt4zDsPyjDxkh-rYbScXLBK_urdla1iJmt30L2rsDizd_c2CD-dD2TlZfNMY-BQjaeabUQwBdS52Qm-_HVnZjbwtVBSP8eqgUOMWUkLQgJYqO0nVC127vDjf3VmofoX-1h7r5JmTZyzfjvAXWxoBukNT-EN7qDzgQKtdritMVzgtSvlWNhNB0jjptqjL_CPVDrx_lVjP1_0wLFWFU5wRGqzKfASOndHKO0QxC3OLnZYdzPANBBxBl01SY1zXkIIbVemfDIrJOyI3bOw_t4fFw_61TzDfGtkuxjzJX-DUawRnJ89AXJ6tkU1fzPGUprSYxWOv94ebrvoNbkdDN29xn9st-w5T6P8u63WHocbNB3Ojw8rAONSIO3orzkETrBlJazeDnM5JYXdahz_0Wkvg7dmgKdTZPhOLEfAE5_Lh5ATnMzJdT8rNUYJHTCfmTIngYmNTJuAEi1QHPkhsllvRs-UiqOhPhFWECtpqCJSuSEwo_BPYM2wXjFaFzLlczeJhzhgE52XZKNvtb7a3UTvJZxQvJe8UchGQNDWac-Imp_v3o2lq2f4BmtglG0dARp9KPw9J_7cHuj5uiOFuEcFljhievMISm-ISCGlfTCB3JCG7_F_HAGlzNeUhPeICqpJNUGPP073J4o9HCzQiZ5vKf4_0G9Tp-J4uzdllc1qQq6YwNcsJGWfB0ZONAwQN0ivHQGapfC_7vGf2-87Ux6kS2ZUr9BNwbe9t2asbuSTgCx-s_kUJWFzydUUhPKcwr-B-F_5LC_GRPZnMKBalZOVK41uLOBh5vN2336eeEVHNc52fvz9p9Rc3Kmd_5SepQ3lSj33f2NkL6wZT5t7vHSt5UM_eKmXu8rFdpefJSMBzXDTkZRp-lk_7Ozvy-kprZ_fh9ecYOkdK8WaXzqJRz2DkVOf9V2LbXZ_3woLQUOZ_hqk5wFVWaoeGbb7KF3d0z2ONRxYzGt8FinivTtmfsk5Jjrkxa2_oBXK-8e9_0nOvbLihvGN_BO82v8fTxs6wts_tb3ZjvSHy1TLvwafKhzLVppQ7h_2rh_Rp3nZet_IUFFA_QMvv0qZXeg30neaUMf7qx8HMPmg9wThy6t6aRCh77th0Rf1AQPyqzn43pRoXz5QKr0myWC6vTXMA4_ThH75lz0xT9Demw1kztnXRfmGZbsLNeMSqFLnHOfUgZxrPGSubnFnkJdUMmKAV4JofdF5z8YgSoj7G-S_YpNyehBwf2GcSBA3A_xszx6_Y_mnJekLoh3ztDvBCXVKzoil3AZVqsVrRMSUYvdpdNnq5qsirwiq04K4qyaXLSlFmalXlekuJCXhIcXrRxmeY0w2RZ4LJqSi6KFcNpXogkw9AyqZbxXNPY7UU8YLss0zyrLhSrQbnhF6KBhXjMFs8GNwkh41N-fWEvo991v3VJhkPlcm9mvfQq_tY0iXmSX6P5YWZv4XccT170Vl3--Ali9PGfAQAA__9QgTLg">