<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/74572>74572</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Crash in CanonicalizeFreezeInLoops pass due to double removal of one freeze instruction
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Friedrich20
      </td>
    </tr>
</table>

<pre>
    Following is the basic block that causes the crash. Here `%.fr = freeze i8 %add32` has been found twice by the pass CanonicalizeFreezeInLoops, and then the compiling crashes in second removal since the freeze instruction has already gone.
### IR snippet
```
for.cond26:                                       ; preds = %entry, %for.inc48
  %2 = phi i8 [ 0, %entry ], [ %add32, %for.inc48 ]
 %inc4971 = phi i8 [ poison, %entry ], [ %inc49, %for.inc48 ]
 %f.addr.0.f.addr.0.f.addr.0.62 = phi i8 [ 0, %entry ], [ %add32, %for.inc48 ]
  %3 = phi i8 [ %b.promoted, %entry ], [ %8, %for.inc48 ]
  %4 = phi i8 [ 9, %entry ], [ %inc49, %for.inc48 ], !dbg !46
  %tobool27.not = icmp eq i8 %4, 0, !dbg !49
  br i1 %tobool27.not, label %for.end50, label %for.body28, !dbg !49
```
### debug-only=canon-freeze
```
canonfr: PHI:   %2 = phi i8 [ 0, %entry ], [ %add32, %for.inc48 ]
canonfr: found:   %.fr = freeze i8 %add32, !dbg !54
canonfr: PHI:   %f.addr.0.f.addr.0.f.addr.0.62 = phi i8 [ 0, %entry ], [ %add32, %for.inc48 ]
canonfr: found:   %.fr = freeze i8 %add32, !dbg !54
canonfr: PHI:   %4 = phi i8 [ 9, %entry ], [ %inc49, %for.inc48 ], !dbg !46
canonfr: drop flags:   %add32 = add i8 %add, %f.addr.0.f.addr.0.f.addr.0.62, !dbg !50
canonfr: drop flags:   %add32 = add i8 %add, %f.addr.0.f.addr.0.f.addr.0.62, !dbg !50
canonfr: removing %.fr = freeze i8 %add32, !dbg !54
canonfr: removing   <badref> = freeze
```
### crash report (part of)
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /home/taowei/llvm15/output/llvm-binary-Debug/bin/clang-15 -cc1 -triple hitspv1 -S -disable-free -clear-ast-before-backend -main-file-name fail_compile_abort_exception_Oz_1700004753_110151.c -mrelocation-model static -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -fno-verbose-asm -no-integrated-as -mconstructor-aliases -fno-use-init-array -mllvm -enable-dfa-jump-thread=true -mllvm -no-stack-coloring=true -target-cpu hitspv150 -mllvm -machine-sink-split=0 -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=2 -debugger-tuning=gdb -fno-dwarf-directory-asm -fcoverage-compilation-dir=/home/taowei/dts/4434canonicalize -resource-dir /home/taowei/llvm15/output/llvm-binary-Debug/lib/clang/15.0.4 -internal-isystem /home/taowei/llvm15/output/llvm-binary-Debug/bin/../hitspv150-elf/include -Oz -Wno-int-conversion -w -fdebug-compilation-dir=/home/taowei/dts/4434canonicalize -fstack-size-section -ferror-limit 19 -stack-protector 2 -fno-builtin -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-slp -fdollars-in-identifiers -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/fail_compile_abort_exception_Oz_1700004753_110151-4c11f7.s -x c fail_compile_abort_exception_Oz_1700004753_110151.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'fail_compile_abort_exception_Oz_1700004753_110151.c'.
4.      Running pass 'Loop Pass Manager' on function '@e'
5.      Running pass 'Canonicalize Freeze Instructions in Loops' on basic block '%for.cond26'
 #0 0x0000564176acf5b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Support/Unix/Signals.inc:569:0
 #1 0x0000564176acf66f PrintStackTraceSignalHandler(void*) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Support/Unix/Signals.inc:636:0
 #2 0x0000564176acd2f6 llvm::sys::RunSignalHandlers() /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Support/Signals.cpp:103:0
 #3 0x0000564176acef25 SignalHandler(int) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Support/Unix/Signals.inc:407:0
 #4 0x00007f1ebeb56520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x0000564174c1c1de llvm::Value::getType() const /home/taowei/llvm15/llvm-15.0.4/llvm/include/llvm/IR/Value.h:255:0
 #6 0x00005641761391db llvm::Value::doRAUW(llvm::Value*, llvm::Value::ReplaceMetadataUses) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/Value.cpp:502:0
 #7 0x0000564176139368 llvm::Value::replaceAllUsesWith(llvm::Value*) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/Value.cpp:531:0
 #8 0x0000564176b1b5c3 (anonymous namespace)::CanonicalizeFreezeInLoopsImpl::run() /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Transforms/Utils/CanonicalizeFreezeInLoops.cpp:196:0
 #9 0x0000564176b1b783 (anonymous namespace)::CanonicalizeFreezeInLoops::runOnLoop(llvm::Loop*, llvm::LPPassManager&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Transforms/Utils/CanonicalizeFreezeInLoops.cpp:224:0
#10 0x000056417c1588a4 llvm::LPPassManager::runOnFunction(llvm::Function&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/Analysis/LoopPass.cpp:195:0
#11 0x0000564176087462 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/LegacyPassManager.cpp:1430:0
#12 0x000056417608770b llvm::FPPassManager::runOnModule(llvm::Module&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/LegacyPassManager.cpp:1476:0
#13 0x0000564176087b33 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/LegacyPassManager.cpp:1545:0
#14 0x0000564176082b55 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/LegacyPassManager.cpp:535:0
#15 0x00005641760883bd llvm::legacy::PassManager::run(llvm::Module&) /home/taowei/llvm15/llvm-15.0.4/llvm/lib/IR/LegacyPassManager.cpp:1673:0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWdtu27jWfhrmhqAgUQfbF7lw4_pvgBYTpNPppUGRSzKnFKmfpJK4T79Byo5tNUln0sPeQQDbPKz1fetISsw52WqAS1S-QeXqgg1-a-zl2koQVvItTS9qI3aXa6OUuZe6xdJhvwVcMyc5rpXhX7DfMo85GxyMc9wyt03wO7CAUZUiWiaNxShf4cYCfAUs5xjRkgmRU1SleMscrgE0bsygBfb3kgOud1FWz5zDV0wbLTlT8iuso4hr_d6Y3iF6hVnYsgU9qjZdL1XAGUGAw1JjB9xogS105o4p7KTmEFcf4Gjn7cC9NDpiYcoCEzvcGg0JSlcoXSKaj__4-hY7Lfse_H6mSvf_8WdjbBK00QrlS_zP_lD-BvcWhIs2QrQE7e0ucEO0DAKl5sV8lI_DGI0L-62Mlizf4HS_OG7EqFzF3-Wbo5knwuKaUSCiZRhazLKp1N5IZ_QLouO-l0U3CRPCJmny7Zfqp9II4_lUIKJlnfTWdMaDeEH4_DuCi6ngxausEscyUbfho6hOFHhTG6PoLNHGR12Sdz2G_9-nShG2ppP9i8P-2mKZTaWExYrVoA4wQIsy_WY0ZDedPy15EtrHHBBQDy0xWu1QvuIhOcmYSk_uiwsaG_Lh5t31mBY_OYhPVMQa8qjkhcJzRrksXsT6u6L4V_P4lXF8olJY0-NGsdY9ao5Yo3YmxBH_QfxL9p0w_DaqfrO62EdCi_kxvzyKCQ3gqmbCQoPytyfivpOFscNhC72xHiM675n12DSIPp2-N-_fLj--xW6oO-kxw_XQHjZ7g7fe98F8iK4RXbfSb4c64aZDdK3U3eGD9Nb8DdwjupbODeAQXccGLDVXg4Bj-8c141-8ZRyCIXoLvTUcnAOBnRnsOBx2MucMl8yDwHbQ2HEre7_vuh8941-wGLo-IItDaTL2zBtrWss6zGw7dKB9dD2i663pANG1Z-Ye5B51ViK6NoPvB3_gUUvN7I6sQiFDdF1LjeiaK6ZbkpWYcJ5h4q3sFeCt9K6_yzD5iImQjtUKYrXDhCtgljDnSQ2NsUACZ9ACk45JTRqpgGjWAW6YVJvxaAIbVhvrN_DAoQ8njs0fXzfZLE3TtJiV-SbL0qzMEo5JZ0EZzsIa0hkBCjvPvAwzjWUdkN5I7cGifKWNBkwsKPYAgjAlmQuBRZqO-S0Ba7XBpGl6wo0OPvEoXxmNSaMNsaHOSN2SsHYcugNbGweEuQ4TbUhQ09rgIsIcJh03-wOTsaMycOPGwQGRWnrCrGU7TLpga0xAR6OJhpG_h64nfhvOVyhfeTvA4yptiAv-JtwoY6VuHxd4ZlvwhPfDwRll-ritY3wrNRAn9RfieiUDueO0t8A8cZyp0XEyWAisDdAduWdWR0uNHU3qxpAvMtTd1QlJTMQ9s02wi5NGo3xF9ztasMQPegTbino0w7haSAth9260Y8PNHVjWAhkDYXSskMF_T8St8CG3iiIv-MnhNzh5TJ-w8_XxrmR9iHdE11mZpEmBo5-tZopIt3Meuh_NpyQJAg4eI6CaUDf2lYL88RWTz2N0hbjcGxeTe0ya0R0_ZKhmDCYnvwJxMB7uSTN6XslQArMF3kdcb42PvsJ09GA9SOVl2NDqgZ84vkhokkVnKmOJkKzVxnnJHSZ3UUJUp_rAwSjFrCNSEylAe9lIsA6T1Wbzf1dXm3fLv95uVp-Xt2u6uVpfb5YfP6B8lWFigtl91yO6_td1gxQ8y5pZ4jB5wPw1dWessllyuJlcgYldqWfWgcXM41DgTINDdRsX0_3iKyMAt6DBRpeNk_l-8nbQMdPifQ7R2XrQo09uwsAHplkLFtEZNhp3RgwKwqrXEKCzffconlEdbo5PqW0OkBCdoSKF8BEFlc8IOr2W4vFeiq-Pd8l499xfU6OC0ztzED4eq_a3xYMyjGie4vQhECurIptVjDdlPcexDedLlC_dzo1fbqzUPjbJP8dOOz8usux-Y1wofx0K4q-w1B7RxYtJHXN5LAcnjT8Wi49DH84KiK4_afkQBmSrmXLhWIjyZVktUL5MjxyyKYeqavAE8CjiHdNCBS_M74wUiC5_Hcoqr85R0glKQZvqKUvfDvoMrEPh0vQTYB7w8T6ccbI0P8eXT_BBQ0s8NdsvdWyRzs4hFXtIsyaDGuqyKmmKozn2Ah_m1aYqiJJ6eCCtHsYJnjiTVIi-SR8KWtL08ZgaZJanNAue8UzAiRv-YmqA8WsL_s9dD3vzxyb974nve9Bx4PoW0XXUkmxRvqRlec65OnNDli8yUT-NT5jb5afPZ5k4zoawvnp6zy30inH4AJ4J5tknF87Vr_bnCZcxqMqUnrOZTdnk1fxpZHZEtlQqgPos_fYZZj8RbZ6do52foa2zuuR5iLdQfHedGRwOZ2zXxwK4GIE9-8DwuuvVntqgfyyH_7RMu8bYLpw_Pnmpwuezig8JvpgUoMWU3Wz-enaPzP6Iv898NQ5MgvD9TeiDj22w-t3moLQ4miM0jbPOx7NyPmfFs3iPbA-niTPGx8Ef4bXUTO2cDGwC8qD_0ZflOfjzlpfOZ0VFT8Cvfz_4mF3voWV8d6L7gL_I03MCdEpgltb_gMCHeF47g38Y-oXgZ9U5-HwKvs6_m0kf_pcYlcUknooJI1qX5Yk7VBS0PwkexU1L3G-kUOYTBuWEwTyvxfcZ_JfQZ9Xs5PT1-PTsQlzmYpEv2AVcZrM0mxeLiqYX28ssndecUk4Xoi6qIq-yWTaDWS5oWWRzPr-QlzQNWZVW6TxNs0WySMtFtciyZrGoq0Uqwi2jY1IlAWRibHsRn6pdzopyRi_ic3oX38xRquEex0lEKSpXF_ZyvHcPrUNFqqTz7ijFS6_g8io-h5P6-ddn401GDIC9wcIMtYLHt2SmwUY_9YrsYrDq8vWPCyO3_wQAAP__d1-XDQ">