<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56308>56308</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash when optimising llvm assembly
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
therealviklo
</td>
</tr>
</table>
<pre>
`opt` told me to report this crash backtrace:
```
Stack dump:
0. Program arguments: opt -S --O3 -o testopt.ll test.ll
#0 0x00007f7e05197fda (/usr/lib/libLLVM-13.so+0xb97fda)
#1 0x00007f7e0519565f llvm::sys::RunSignalHandlers() (/usr/lib/libLLVM-13.so+0xb9565f)
#2 0x00007f7e051957ad (/usr/lib/libLLVM-13.so+0xb957ad)
#3 0x00007f7e03e3e8e0 (/usr/lib/libc.so.6+0x3e8e0)
#4 0x00007f7e06176431 (/usr/lib/libLLVM-13.so+0x1b76431)
#5 0x00007f7e06181e35 (/usr/lib/libLLVM-13.so+0x1b81e35)
#6 0x00007f7e0611f4e6 (/usr/lib/libLLVM-13.so+0x1b1f4e6)
#7 0x00007f7e06121a4b (/usr/lib/libLLVM-13.so+0x1b21a4b)
#8 0x00007f7e061228f1 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/lib/libLLVM-13.so+0x1b228f1)
#9 0x00007f7e086079b6 (/usr/lib/libLLVM-13.so+0x40079b6)
#10 0x00007f7e075837c5 (/usr/lib/libLLVM-13.so+0x2f837c5)
#11 0x00007f7e053406e8 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/libLLVM-13.so+0xd406e8)
#12 0x00007f7e07575166 (/usr/lib/libLLVM-13.so+0x2f75166)
#13 0x00007f7e053424a4 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/libLLVM-13.so+0xd424a4)
#14 0x0000563287104088 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool) (/usr/bin/opt+0x32088)
#15 0x00005632870f47af main (/usr/bin/opt+0x227af)
#16 0x00007f7e03e29290 (/usr/lib/libc.so.6+0x29290)
#17 0x00007f7e03e2934a __libc_start_main (/usr/lib/libc.so.6+0x2934a)
#18 0x00005632870f6965 _start (/usr/bin/opt+0x24965)
Segmenteringsfel (minnesutskrift skapad)
```
Also, here is test.ll:
```
; ModuleID = 'test.ll'
source_filename = "test.ll"
target triple = "x86_64-pc-linux-gnu"
@0 = private unnamed_addr constant [6 x i8] c"%lli\0A\00", align 1
define void @T(ptr %0, i64 %1) {
entry:
%2 = getelementptr { i64 }, ptr %0, i32 0, i32 0
%3 = mul i64 %1, 2
store i64 %3, ptr %2, align 4
ret void
}
define void @"T$const"(ptr %0, i64 %1) {
entry:
%2 = getelementptr { i64 }, ptr %0, i32 0, i32 0
%3 = mul i64 %1, 3
store i64 %3, ptr %2, align 4
ret void
}
define i64 @"T$getX"(ptr %0) {
entry:
%1 = getelementptr { i64 }, ptr %0, i32 0, i32 0
%2 = getelementptr { i64 }, ptr %0, i32 0, i32 0
%3 = load i64, ptr %2, align 4
%4 = add i64 %3, 1
store i64 %4, ptr %1, align 4
%5 = getelementptr { i64 }, ptr %0, i32 0, i32 0
%6 = load i64, ptr %5, align 4
ret i64 %6
}
define ptr @copystr(ptr %0) {
entry:
%1 = alloca ptr, align 8
%2 = alloca ptr, align 8
%3 = alloca ptr, align 8
%4 = call i64 @strlen(ptr %0)
%5 = add i64 %4, 1
%6 = call ptr @malloc(i64 %5)
store ptr %6, ptr %3, align 8
store ptr %0, ptr %2, align 8
%7 = load ptr, ptr %3, align 8
store ptr %7, ptr %1, align 8
br label %8
8: ; preds = %12, %entry
%9 = load ptr, ptr %2, align 8
%10 = load i8, ptr %9, align 1
%11 = icmp ne i8 %10, 0
br i1 %11, label %12, label %20
12: ; preds = %8
%13 = load ptr, ptr %1, align 8
%14 = load ptr, ptr %2, align 8
%15 = load i8, ptr %14, align 1
store i8 %15, ptr %13, align 1
%16 = load ptr, ptr %2, align 8
%17 = getelementptr i8, ptr %16, i8 1
store ptr %17, ptr %2, align 8
%18 = load ptr, ptr %1, align 8
%19 = getelementptr i8, ptr %18, i8 1
store ptr %19, ptr %1, align 8
br label %8
20: ; preds = %8
%21 = load ptr, ptr %1, align 8
store i8 0, ptr %21, align 1
%22 = load ptr, ptr %3, align 8
ret ptr %22
}
define i64 @strlen(ptr %0) {
entry:
%1 = alloca ptr, align 8
%2 = alloca i64, align 8
%3 = bitcast i64* %2 to ptr
store i64 0, ptr %3, align 4
store ptr %0, ptr %1, align 8
br label %4
4: ; preds = %8, %entry
%5 = load ptr, ptr %1, align 8
%6 = load i8, ptr %5, align 1
%7 = icmp ne i8 %6, 0
br i1 %7, label %8, label %13
8: ; preds = %4
%9 = load i64, ptr %3, align 4
%10 = add i64 %9, 1
store i64 %10, ptr %3, align 4
%11 = load ptr, ptr %1, align 8
%12 = getelementptr i8, ptr %11, i8 1
store ptr %12, ptr %1, align 8
br label %4
13: ; preds = %4
%14 = load i64, ptr %3, align 4
ret i64 %14
}
declare ptr @malloc(i64)
declare void @free(ptr)
define i32 @main(i32 %0, ptr %1) {
entry:
%2 = alloca { i64 }, align 8
%3 = alloca { i64 }, align 8
%4 = bitcast { i64 }* %3 to ptr
%5 = bitcast { i64 }* %2 to ptr
call void @T(ptr %5, i64 3)
%6 = load { i64 }, ptr %5, align 4
store { i64 } %6, ptr %4, align 4
%7 = call i64 @"T$getX"(ptr %4)
%8 = call i32 (ptr, ...) @printf(ptr bitcast ([6 x i8]* @0 to ptr), i64 %7)
ret i32 0
}
declare i32 @printf(ptr, ...)
declare i32 @puts(ptr)
declare i32 @scanf(ptr, ...)
define i1 @strcmp(ptr %0, ptr %1) {
entry:
%2 = alloca ptr, align 8
%3 = alloca ptr, align 8
store ptr %0, ptr %3, align 8
store ptr %1, ptr %2, align 8
br label %4
4: ; preds = %16, %entry
%5 = load ptr, ptr %3, align 8
%6 = load i8, ptr %5, align 1
%7 = load ptr, ptr %2, align 8
%8 = load i8, ptr %7, align 1
%9 = icmp eq i8 %6, %8
br i1 %9, label %10, label %21
10: ; preds = %4
%11 = load ptr, ptr %3, align 8
%12 = load i8, ptr %11, align 1
%13 = icmp ne i8 %12, 0
%14 = xor i1 %13, true
br i1 %14, label %15, label %16
15: ; preds = %10
ret i1 true
16: ; preds = %10
%17 = load ptr, ptr %3, align 8
%18 = getelementptr i8, ptr %17, i8 1
store ptr %18, ptr %3, align 8
%19 = load ptr, ptr %2, align 8
%20 = getelementptr i8, ptr %19, i8 1
store ptr %20, ptr %2, align 8
br label %4
21: ; preds = %4
ret i1 false
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWl1zo7gS_TXOi8ouSXw_-MHJbOpO3Znaqc3U1r6lZBA2dzBwhZhN_v22BAbJBtvMeGs3lWADraPu063uFmRbJu_rhY_LSsIRyTJP0IHDJxK8KoVEcp_VKBas3qMti79JwWK-cDYL_GGBj0cfd7_69EWCHEqaQ9XL4dUCR19EuRPsgJjYNQdeyBpuI5gXLV_Qcvmrg5YlkryWcGmV5_orfLYAaEEdjPAbhp8gDTj2SBSkCYPr4YI-N7WAY55t2-OnT79_XhJnVZcL-ojftlp0QaMBi5xgeb6Xojz_flAqO5v6vW6__NYUL9muYPl_WJHkXNR6vujGaRWqNS09nTZgya1YIGphOSaWwx0ecjyOFQPKytc4WsqCcU0YnwS-C-TcohLZalkLzLPBQsLh0m1gWtYC820wkrrcvxFMy1pggQ1GCXO3N4JpWQssPAGjYUqM6PlY1PKpPGyzgn9hdRdJoilgukHouSlimZVwERR9MkZvINre66z-zAq242LhPI0Mcn7R424LRDBBaWiZEJkmhD4Oou1t5LpYy_ZgajFZKzPwQieIb3M7TbWsBWYvTcfFPg8Nej6XSZPzr-WRCsXwJmGVLMU40e2AWTR3Q2aRnGhFLUuoTUvgEf82jmmqZS0w54QW6jLXMEfRcMGU-aYjZf4_S6gy0eLgmKs836FhQLCLQzM0QFFFw5es4jmsPUvpFymyYvcbT22lJ2z5CjWKy88s3muczdjdT9lWMPH-sUjLj4cqP5cqy_zXRlaNfM7yEZCfuj1hzkYI9q6umuQPsop_Uxwq7auEidqzdrr_ZkVySep3LrI04-Iot1V3rn7aLofMCEfVcuiaRMGNlp89y884dQOWogPLigsolIKQheLbBZJGNLpeILWUBROcwjguQ6-vathrLZmQr2eajQPDOAs4PLHSj3wPtZCX7HRBrMd54TvVSnHl4TrluRp4yIqC142sv4GnJKq_scpoHU6atfa4ydWie0J7LjiCfu_YeznjHd7CeUTtyvn4AfIE_NHgOIQGrUxdNiLmrylEb8Ggo2zFaC9GWzGp1xKCEK3yXugt9F99d1nFS1jHzdtyVzT9gO4IZUhLVyL7ziRHTaFmSV5ZkggUl1CBWQE0eo8-ekNZuPA-oFhhUC_Ps4X3BBBwwPrSE2I5NHmImDMkPIW1j76XGXRoLv4KxFZSgHYeViMy31XfiQ7t4LEdA54Q7z1pSAlQrSWYyHOuPKUxgsd2fPBBQVmwqkUcvgw4jsY5NLkx8xOiRwnompXn2luOgWqY5x6FBRCu7OrMBS2m7QaCwHRXM6rJ-hey4PxtLGiongTQ_49TDi7bTe5k9335y0vYdcDQKwTBZVfLw5qySCWjfJtwZBzOu5MZ_pQZ3oSfOxX9S77WEC6Oy-q9lmK2k1melzFTKIMO4ZkLr0k5N0m1bolB7BihoDHkWVvpM-INP7qWH3tKNWRHxEFrAZDdEGNz1jm-m8s3HOCMKGwJ4_GgM60LBu92DNwKHoyHYC-8FShnW10lvdAMgVA9ipj5o4pgJXhSd1XLI9oe-NLGyGBQNGXQBAEEG_EdGvLRWa1q5dsIzOJDhVTSClsQJYwN0zPSCuvu7khDq3R_Sq22AG7O5uWMFssyZ4qKMXepy-5c7rwJ7og7Ql6XwFrCPFPamaDan6tPMJLzbMX0-gEdyGhMk-CGScK5tEZXtQovaxX96FKDCLtvTFEyx_je41YiIuPepnROKlKF5gh4bFYvdRVjOfvehaYrj1OFZpvJmNWyFdu0o2Wpsc9KPB433x2NDzwjPFyTIvcemTicSMTezGXiT-QSbzxcgpE07I9n4cDKuqGdkp27lyazCTOqkd08jTl1qEZG8xBNN4HkWpQM5WpGthprf-1sRS5nK_qj4Qi--PlsZRnvzqHf6F2JO5FS4pyJvns1m7Zhy29JHnd2qeC8TT5ngm2WgqZbI6rHD6E-O1vXt-z6ukx00udfaX2vSrtW_rLENy2ancf61T895DT16WZ4ZP_vHXe-jt1kG9lifFMztjtp49SQP-2o3fFFFJxtAaY2qa6tZWgM1D4NuzW4Wq20Q11ciayQaYfQ80VD82mK5kw9hOk4o5HxPCAwptQhPOzfJsK3CzZz5kGnSwMaWU8EsSVXx6y4gtsGPekqMyTxk2cdPxT1P7PRmyyoV_dB5ErL-PdW37ahnVN-xwz60fJ7e2seTsAH4_DRUN35_83qbvajfYGP7JKO7V2W9aSR3KMjvq3AThBN6AQVZKIx7vZxJztOavU6Q7F7K_vNp1ZAioaf70tdmzHPPvUtxrw7MEZ6TXWKIoZa3Sz-XWcZNoMzHBNe7XyCy51PeMMkc59PUHxVq-iiVvTaU6DJBAUr545rpXN8yvL66Pm-PB3feDwkayeJnIg9yEzmfP2k_xXmzz0v1P-uZIeszoqdfluGWF3zwzZ_f2hEvt5LWelX__QZfneZ3DfbVVwe1Ish9Wqt_VhWovwfjyWcZnXdcChmz57v4PBhv8ZegDmL4yQkqUd9yghlOHEc7GDm-R590BTVayjLUJAfsjXFlGIYTBxg1Vv5HgsxcxhJCPfj2IXCxqGby1dq4lUpdg9irXXYNrsabuZZLevhJlgDPuH8iM8auS_FWqp3RCz_nn3Lywet81or_Bfp3XOm">