<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97590>97590</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Inline] Assertion `V->getType()->isPointerTy() && "Unexpected operand type!"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations,
crash-on-valid
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
dtcxzyw
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
Reproducer: https://godbolt.org/z/qGc1Kx5YK
```
; bin/opt -passes=inline reduced.ll -S
define i32 @func_120(i1 %tobool626, ptr %g_231, ptr %l_506, i1 %tobool724, ptr %p) {
entry:
%0 = bitcast i1 %tobool626 to <1 x i1>
call void @llvm.masked.store.v1i64.p0(<1 x i64> zeroinitializer, ptr %g_231, i32 8, <1 x i1> %0)
%1 = xor i1 %tobool626, true
%2 = bitcast i1 %1 to <1 x i1>
%3 = call <1 x ptr> @llvm.masked.load.v1p0.p0(ptr %g_231, i32 8, <1 x i1> %2, <1 x ptr> poison)
%4 = bitcast <1 x ptr> %3 to ptr
br i1 %tobool626, label %common.ret, label %if.else647
common.ret: ; preds = %entry, %lor.end739
ret i32 0
if.else647: ; preds = %entry
br i1 %tobool724, label %land.rhs725, label %lor.end739
land.rhs725: ; preds = %if.else647
%call726 = load i32, ptr %p, align 4
br label %lor.end739
lor.end739: ; preds = %land.rhs725, %if.else647
%call745 = call i32 @func_136(ptr %4)
br label %common.ret
}
define i32 @func_136(ptr nocapture readnone %p_137) {
entry:
ret i32 0
}
```
```
opt: /root/llvm-project/llvm/lib/Analysis/InlineCost.cpp:2656: llvm::ConstantInt* {anonymous}::CallAnalyzer::stripAndComputeInBoundsConstantOffsets(llvm::Value*&): Assertion `V->getType()->isPointerTy() && "Unexpected operand type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=inline <source>
1. Running pass "cgscc(inline)" on module "<source>"
#0 0x0000000004e7cf38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4e7cf38)
#1 0x0000000004e7a69c SignalHandler(int) Signals.cpp:0:0
#2 0x000077b96f042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000077b96f0969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000077b96f042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000077b96f0287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000077b96f02871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000077b96f039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x00000000043ea53a (anonymous namespace)::CallAnalyzer::analyze() (.part.0) InlineCost.cpp:0:0
#9 0x00000000043eb650 llvm::getInlineCost(llvm::CallBase&, llvm::Function*, llvm::InlineParams const&, llvm::TargetTransformInfo&, llvm::function_ref<llvm::AssumptionCache& (llvm::Function&)>, llvm::function_ref<llvm::TargetLibraryInfo const& (llvm::Function&)>, llvm::function_ref<llvm::BlockFrequencyInfo& (llvm::Function&)>, llvm::ProfileSummaryInfo*, llvm::OptimizationRemarkEmitter*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43eb650)
#10 0x00000000043ebba6 llvm::getInlineCost(llvm::CallBase&, llvm::InlineParams const&, llvm::TargetTransformInfo&, llvm::function_ref<llvm::AssumptionCache& (llvm::Function&)>, llvm::function_ref<llvm::TargetLibraryInfo const& (llvm::Function&)>, llvm::function_ref<llvm::BlockFrequencyInfo& (llvm::Function&)>, llvm::ProfileSummaryInfo*, llvm::OptimizationRemarkEmitter*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43ebba6)
#11 0x00000000043ed0ab llvm::InlineCost llvm::function_ref<llvm::InlineCost (llvm::CallBase&)>::callback_fn<getDefaultInlineAdvice(llvm::CallBase&, llvm::AnalysisManager<llvm::Function>&, llvm::InlineParams const&)::'lambda2'(llvm::CallBase&)>(long, llvm::CallBase&) InlineAdvisor.cpp:0:0
#12 0x00000000043f310d llvm::shouldInline(llvm::CallBase&, llvm::function_ref<llvm::InlineCost (llvm::CallBase&)>, llvm::OptimizationRemarkEmitter&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43f310d)
#13 0x00000000043f4af5 getDefaultInlineAdvice(llvm::CallBase&, llvm::AnalysisManager<llvm::Function>&, llvm::InlineParams const&) InlineAdvisor.cpp:0:0
#14 0x00000000043f4d3b llvm::DefaultInlineAdvisor::getAdviceImpl(llvm::CallBase&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43f4d3b)
#15 0x00000000043eda71 llvm::InlineAdvisor::getAdvice(llvm::CallBase&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43eda71)
#16 0x000000000371e48d llvm::InlinerPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x371e48d)
#17 0x0000000002e127ae llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::InlinerPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2e127ae)
#18 0x000000000431385b llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x431385b)
#19 0x0000000002e1154e llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2e1154e)
#20 0x00000000043155b9 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43155b9)
#21 0x0000000002e1152e llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2e1152e)
#22 0x0000000004c780c0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4c780c0)
#23 0x00000000008d8702 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8d8702)
#24 0x00000000008cb60c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8cb60c)
#25 0x000077b96f029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#26 0x000077b96f029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#27 0x00000000008c2a6e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x8c2a6e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
https://github.com/llvm/llvm-project/blob/f1a8f94bba8b090a0d667065e4b8b4fc66b6a5cc/llvm/lib/Analysis/InlineCost.cpp#L2647-L2648
should be removed as we use opaque pointers now.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt9z26j-_WvIC2OPhH4_5MFx4n4z204zTbcz3ycPEsjmBoEWUJrkr78DUhwhO9m49b2zu7c72yRCcDifw-GDhMBas42g9BwkFwAhYqqHp8fvACGQXJ7hzmylOh8Kz0pJHs-_0FZJ0lVUgWgBt8a0GkQLgFYArTaSlJKbuVQbgFZPAK3--FCFvz0k__8bCC5BsABpMPzfX0YXsGQCoJVsDZy1WGuqQXTJBGeCQkVtP2TOOZzd9i0Ire0dFiEI4qDuRLUOUQBQzkIIUGJkKSVPUQrQErZG2bLNGkXh6Jqvk8DdHzfJUDyq0gJUQJBd9H1SYdSjjdFdQVshgCC6hCUzFdYGTvqGRkIQLUP4AFkIoqvndhXmHN5LRix1zu-beYP1HSVzbaSi8_uQpfG8tcE8t05jEF3BJ6okE8wwzNkTVYdCs3rk9o9xv44oQMWId-h4P0g15WzbGtXRUV10IMbwtdgASiJX3wU51GiNcjT8aLnEZH4ftkEf67tDQaPCAbmVTEvhhxh7tCdMLEsj3eXQojwoBccl5ba0kk0jxVxR4xWzek65pmmcDUZ2P0eVowW05m4VJdoRAijpfWSDQAmXak4FyaIddUWNiz0YI476eR3xcCSDo3eUORZkrrY6Q4lfPmHS_xzXPtTzVAAnvR37DKWujh1lG48_q5YQc7YRMB6R_jMmL6WHiEzCepNanLxY1MsgUfpixHhkpzG70eD27LLLMc1DiWkHK2SFW9Mpm9IwEVJQp8c6jLI3M83UE36X02TqX8q2dyFaKSkNQCs7B2etkv-i1fOl_cVKgFYLgfmjZhqg1bXLvUupzbxqWxAtUJqkFsk1iBYgWiyl0AYLcy0MQAtLHwspHhvZaUuxr4M5d6hPbqEA0UIbxdqFIEvZtJ2h1-JCdoLoZ7DPda2p0QDlLx19w7yjAC2AnZVu_BdaU2WYFBCkwbcZiK421Hx9bKnNmqiwBUzfSCYMVV8f-0LomqcQIPS7oA8trQwlULZUYUGgcY1Du-KhDNaYcUrmvYQ3H68Wt1dQd2XDDMSw7DZQ0VYqY5PIZOljZtuV80o2I219xZnWHbUSQ9svExXvCIVmS2GlsN7CEld3RuGKDt3fGlzdQdI17c4SwRwExY2SG4UbiNWma6gwehhnO-JoVcmmZZyqGX1ouVR2vVhVHIvNDD9rp2dGdeIOoNVo8ZUWAretve5M25m5hrPb_UUZREstO1XRXfYPLakvnRBMbKCtbpWuNrqq7LrsWtnRQwhKARtJOm7tjzwghAbPAxQFMHgInv-LaVbVUT5yn37U_R83ignjRPpqVfOco_D3tdRGUdyAPqUza1brhfwnpQLoIngYaL3kCoCicMIbp0UFb9lGYP5_WBBu8fOBRl-shykWuH87IDQAZVlZpHUQowQFA_F-uj7k6TqNZ5yJ7mG2EV1_o5prOU97eraJRy7yMYu0qCvYmq1NSOs7ZhftYzpw7b0O4inpOEvhRrs4jyUfZ6mHnfjYKM_qCOLSTsSjkF1DDzndQw7LozHD0sPMfMyooEV6HKZr4mHmnrciipMIW8xd4oUCN1S3bh4Ur6Vg3F_t0mI-b7Eyc-sUuJf3J6YsJgzKNAlGs3JDzQuCNxUtjQus6TAPX26sOlHZOeYS_PhGD3SDFW40rOz6sNf2K1Y28SssdC1Vcy1quVenHvDXitYgWr7cWGjdNa29tcTVlvZrQ36IWL_sXL0Ttyf1kZUKq0dLaUf-NPgXXFZ3K0X_6KioHoeYj4K-UbJmnN52TTNQ3BP_c2tYw56wRflCG6zurhpmjE1ei1Mm0N5BO5Pb_BlMLVbi9Ocs9stJ_xtOKnHqOSmcOIkEuNyzhbXRe8Qa1X7ddU4hV2xfL-yj3LoWIFpuqLmkNe744N0FuWeTZ5VX3fv8VP4JC7yxOXx5YHjswLzP9cOyAFDGcVMSbB94_yQglHMpNj66Xwu-hKWl2l867GggfzTqKAzI-IFuKztOrocHxfcIc4Kheq9TXc_2ffqkjnUSeI6NJhrFuE7gX8k87xnoeBoEicbTbi8WLdUutfexXTctf2PkTjgClps3Ask0Z-As3NPlMOu3RuTk3nHEPObpmHmUhTTOyR5zdYP18OKkOuEx_oifHi3rDwq3277odrk8ylGvQYzb-3VQesh9e3X81PPhdrn8vSXY0C9Ud9yc1hWDdJ622VhbREOUYTpiRKjBjA9LItb6kySUH63MeIT-85L_pN7P69wvFx120WASz0WT17cwypNxYnTO-UE9flnk72eRwQGeRYpJogmT-PSJ5h9otL8Dx1-T4e18ab0-ngxoshMQJklZjBh9cpvIX-WN1OazIlQ5itbcC4Jb8_x8NlW8b3aUwkOTQbNTJgAbkhdzuJcA0HEJ4Dm85VFK_YAUrzn6r6PvIJ-nr_8WWmV5UAXvSI2HVP2nyDSo4MnkvYgGOcmzAI1Yqk5YpW5YS_fe12-NYmLzhdaHPPjKxtsnXG0dzuLQ3dEOWP9mOK0lJf_svlatGD8A8lO3XwlnoRR-_DLZeHCa8G7DxP6a9FJfG-JvYIBo2R8IGctosS46xsmw_1AMZvJQZWvWxr5a9hsYLorfmCBv1fpGFasZVc_1-lfTY3-fzH29tzzzxb75qjINKihb8wkzcbJuHarX7fT7UkGKIz-4uSYe5vTLUkHjAK7XttlaG6zMunkJ6t290NjvJZsIhnBKYY9_Or0s6K7X56_PhqqGCWwogd-Z2cL-Sx-IFvD2-sPt1YdvffXl0DFU1HRKUDsBYLg74uGfWTj6k3rJpRWuDnFeF3FZ4rwMigAHJE2zIE1oXOZlXFdpWqY4qar3H3tA0UeUxtnM_sx7cv02JSwpVLSR95RArOF3CjtNoWzxHx2FbX_wQEMhvw8f8c_IeUSKqMBn9DzMUBCERVQEZ9tzRJMgymlCsjysUhxENIvDJEV1jqIaB-SMnaMAxUEWRGESFEkwJ3FVEhJUWVbiME0xiAPaYMbnNqa5VJszd8LgvMiSIjhzB1f0cKxvyAhytM-p3YmHJUDInT6YSTG7x5yR4eifOndSl91GgzjgTBv90o9hhrsTg8OmbXL53zqYcdYpfv7jJy96ae7P0b8DAAD__9SBYLs">