<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108150>108150</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] [math] -convert-math-to-funcs crashes in MathToFuncs.cpp:187: func::FuncOp createElementIPowIFunc(ModuleOp *, Type): Assertion `isa<IntegerType>(elementType) && "non-integer element type for IPowIOp"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
axeabc
</td>
</tr>
</table>
<pre>
git version: 761bf333e378b52614c
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -convert-math-to-funcs a.mlir`
a.mlir:
```
module {
func.func @ipowi_exp_one(%arg0: index, %arg2: index) -> index {
%c0 = arith.constant 0 : index
%0 = math.ipowi %arg0, %c0 : index
return %0 : index
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Conversion/MathToFuncs/MathToFuncs.cpp:187: func::FuncOp createElementIPowIFunc(ModuleOp *, Type): Assertion `isa<IntegerType>(elementType) && "non-integer element type for IPowIOp"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt -convert-math-to-funcs a.mlir
#0 0x000055d205b7d128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d7128)
#1 0x000055d205b7ac3e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d4c3e)
#2 0x000055d205b7dabd SignalHandler(int) Signals.cpp:0:0
#3 0x00007f789bef0420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f789b52d00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f789b50c859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f789b50c729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f789b50c729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f789b51dfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000055d20849cefb (anonymous namespace)::ConvertMathToFuncsPass::generateOpImplementations()::$_0::operator()(mlir::Operation*)
const MathToFuncs.cpp:0:0
#10 0x000055d205c8124e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11db24e)
#11 0x000055d205c8124e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11db24e)
#12 0x000055d20849808a (anonymous namespace)::ConvertMathToFuncsPass::runOnOperation() MathToFuncs.cpp:0:0
#13 0x000055d208c6f2d6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c92d6)
#14 0x000055d208c6fc40 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c9c40)
#15 0x000055d208c72282 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41cc282)
#16 0x000055d208c6aab1 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x000055d208c6a70b llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#18 0x000055d208d173a5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x42713a5)
#19 0x000055d208c65b35 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfb35)
#20 0x000055d208c65ddf mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfddf)
#21 0x000055d208c6610e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c010e)
#22 0x000055d205b5dd67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b7d67)
#23 0x00007f789b50e083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#24 0x000055d205b5d8ee _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b78ee)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWd1v4yoW_2voC0qEwZ8PechkGm2lqVpNZ7WPFgbssOOAF3Db7F-_AjuNnX7cmXsne3VXK82kBg6c8_udDzCm1spGCbECySeQfL6ivdtps6LPglbsqtL8sGqkg4_CWKkVIGuYpVFVE0IEyfIqwWkUM4A-A7Qefu3BOrH3giBFf6965XoY5UsUL1P45dsDSNFU2ojOaN4zAZ-k242z9q00C905uGBaPQrjFnvqdgunF3WvmIV06SXOVho7ydj0o-EfHNp7zftWQJB9GtoQ-rWW_geCGMlOP8lSPHelVgLgHOCEmgZ5g6Ti4hngDRz68KSvgAtArofWdGnoZRmCgHyG1Ei3WzKtrKPKQd95nD-VHoQ9zmWwBR4tGBSz1_OMcL1Rx7lna4Ls88jDy8MZIdZR9h06Q5k4kfY2daM7gnfwllNHAd7afx8A3t5-ufkK8LZtH_cLI1pBrTg2O6P_KZgDeBscg7etrADeboJLQzDh7S11u2966706by1Z1wGyjvLMa_Ve8kaStR-86yAzgjpx3Yq9UO7mXj_d-AGA89vg5rsOArz21H07dALgwi-ytlYYJ7XyISYtBWRzo5xohAlC5BrgXAwrjrMgwCnAKQQYK60WcpCGoxB0h07AWhsYDLjrAMYAZ7CmshV8OXB3_-V6_XANbV_tpYMUVn0Djei0cdBpuHOusx4Y3gK8baTb9dWS6f1I4WsmpbW98FRBqjiUirU9F9DtBGSG2h2sKPseXDqqfwhO5v2-e_ExWgJU3BvdGLqH1DS9x2J_t2-rXrbc_5Vq9PQPZO4QpAATBNEzQgglCccoqTIe4RwG6MHb9mCHh3sjlQtgvoWAxflJyNCnUltnBN0Hf22gVG7wXv4LIQH8CT1HiGeRX7Y4YYjOMFBGxFsYvvbqQTaKtn-jirfC2GDfpcyMGREzM_E51bTicGYQwPnI3NB9TEIU_r8sRMaFsjrLi0rUKMYIlqUR1mkjSuNGREO6P-dpmcaLVqr-edGofhjo3M4IypdWL9FgcRxjNLM3nqlJMEeogoZKK-AEfNPKii2-sBuMnl-aeEkiz2VAAfB2ufStg-Wi87nTK_k8dDwGa1Tvm2HppS8zSeQrz8mSZG4JYnlSQFrpgPTHLHF8YCPMCkpyryQ7KUnPlWS4gI1w5WB3aUXjE7V8pG3_wwxI5Tz-VlO-tw2jg-oE-XqYn3Rnb-kuVVv6iSXXeyrVH1NZZD6ISHzSmc91Rrzm6Q8EDvMhk4aQIaTm6SxkimmI53HBRF35NanS6rDXvYWK7oXtQgUphqwctiM32XruqR0zthFKGOrEXXez74aiT_0GMmbuIARwXKLhUXdeXJtxGOfHEwlZ34WhsOmtTzaHUwF8ve1NMs4XmHmVZHmEYwEfteTwpIALR2U7PD_R9jsgm9PgVpsnaviNG-0Le917xm0mxctXbT9QGlEDsgk6P8TlV95MzPoHbb_fGe6Ly2UqXcQrHJ8qnacr-j9dP0MXPsuaHOX0j2SN6dWdmgANm9xvxjiZWcHSGvP0HX_ddd_0XecVrjntgoNGvTOug0WDh9733WlkrWh7sNLeUkUb74ANrLRu_d9ehXckfsGDRRyxAk_KmackPqeExeinKbmXnWhleKeZsuBFX5Cmv5yj6SSv6kZZZ8JJ01fH9UcCg-ZhYLT9nhp_zFe1HirmkDyXcgOL0cwNydwNGcY5PrP-yMebcXiW8xcym-Ecz8xOz6KH0iqCnTC1Nvs1O25jHx2jrePjEXZHjeBl5wwgm9OMB90bJm4bXyCPjjkLJQ9so5UTz-6V229bae46d0ul2mhVy2ayRgEno28XjOwcX4aqSSn-ohvJaPtV2L5175fo9yYAnL_A75X8Vy9ewb8Ve20On_q6HjLhRZ6LmvatK7lohRPvzyHXY_1_3wlhhwgjjLatf7srazXbqyY8_ag7L47nZN1nSVvB3FfRSOvM4XV8fBQDs_OV34JbrZr_LpIPPPPbEZrPIpRHGaHJBLvtWunWit8bzYS1R3P_lLj7C2bFhxLTsQdnpGq-ivrd7svUZJxFhCazmlyc1aykIsnb2fC_lsuX2fWquiIzhjE6Z5jz-l2Gx6MK29HhULL-2cD5LXouBpvzegY7OoOdRkj8Eth_Cj6GIjR7R8Fnl1cJ52kGx2uJC9yeVRlPs5kB5OyKRKCcwLJsZcVK66hx5c9ckjDbH6-lhscwGNYJ1yUkxv73pD4-x58LAQfFl2IgFxMXvHwRuOIrwgtS0CuxijKcIpLnGbnarbI8TWiexVnGcVqQNKJFVuQ44VFFeFWwK7nCCMeoiCKURTEhS15lhUhQhCglFWUJiJHYU9kuvZ1LbZqrcNu9ilAeJeiqpZVo7fEzlVkFNFXfWBCjVlpnT_OcdG34oBWiN_kM_SN1O__4zsV0uD4XFkr1xqvqX_grxFVv2tXv_8wwcv-4wv8JAAD__9BKnho">