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

    <tr>
        <th>Summary</th>
        <td>
            Clang crashes in `globalopt` pass when using `target_clones` attribute after inline function definition
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Compiler Explorer: [https://godbolt.org/z/PfcEGY1oG](https://godbolt.org/z/PfcEGY1oG)

(Found by fuzzer)

**Source Code:**

```c
inline int foo(void) { return 0; }
extern inline int __attribute__((target_clones("default,avx"))) foo(void);
```

**Crash Traceback:**
```
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: /opt/compiler-explorer/clang-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -O1 <source>
1.      <eof> parser at end of file
2.      Optimizer
3.      Running pass "globalopt" on module "<source>"
 #0 0x0000000003b583f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3b583f8)
 #1 0x0000000003b5653c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3b5653c)
 #2 0x0000000003aa58c8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000075186bc42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000003489991 llvm::Instruction::mayHaveSideEffects() const (/opt/compiler-explorer/clang-trunk/bin/clang+0x3489991)
 #5 0x000000000534c251 llvm::GlobalOptPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x534c251)
 #6 0x00000000051ac2de llvm::detail::PassModel<llvm::Module, llvm::GlobalOptPass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x51ac2de)
 #7 0x000000000351daaf llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x351daaf)
 #8 0x0000000003dfc594 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
 #9 0x0000000003dff74e clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3dff74e)
#10 0x00000000044d3775 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x44d3775)
#11 0x00000000060471ec clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x60471ec)
#12 0x00000000044d3e95 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+0x44d3e95)
#13 0x00000000047ae771 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+0x47ae771)
#14 0x000000000472f3ab clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x472f3ab)
#15 0x000000000489bbf3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x489bbf3)
#16 0x0000000000d668a1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+0xd668a1)
#17 0x0000000000d5f00d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#18 0x0000000004520499 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#19 0x0000000003aa5cf3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3aa5cf3)
#20 0x00000000045206b9 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#21 0x00000000044e441d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x44e441d)
#22 0x00000000044e53b1 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x44e53b1)
#23 0x00000000044ef76c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x44ef76c)
#24 0x0000000000d634c1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xd634c1)
#25 0x0000000000c24d54 main (/opt/compiler-explorer/clang-trunk/bin/clang+0xc24d54)
#26 0x000075186bc29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x000075186bc29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x0000000000d5eaa5 _start (/opt/compiler-explorer/clang-trunk/bin/clang+0xd5eaa5)
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWVtv4zYW_jXMC2FDoi6WHvKgOPG0RYsJxukC-2RQ1JHDHYrUkpTH7q9fkJIjybl0Ogl2F7uFinh4Ox-_8_GcI5Eaw_cS4BolNyi5vaKdfVT6uuQpuypVdbpeq6blAjS-O7ZCadAoKjBKbh6tbQ2KCkQ2iGz2qiqVsEul94hs_kBkc1-zu09_D9UnlNwikn3_cJKjoHAPyTaqkxUuT7ju_vgD9KTLPVvVaQZ4rSrwC_un70-D_mEoKLgUXALm0uJaKUSyg-IVIjlGqxuswXZa4gBFNxitblFQwNGClngya7ej1mpedhZ2O0QyRDJL9R7sjgklwfgmUkFNO2ERWdPDERHiwPpnbhVFN1OA0_2sNTWP-EFTBiVlX2d7moy___Wu2N5h05UNt5jisttjDa3SFluFL3jm9rErl0w1iGyEOJz_LFqt_gHMIrLhxnRuDxtMZYW5ZKKrANtHwMzjcVCsw4TIGrcaWq0YGAMVNp5_1-xmUmMU49RChXUnsWGat3aJgmJrKfuKq65pHaygCJYoyO-12mvaYKr3XQPSGq8qslGtw8QGzS3grDmyYYLK_cLqTn5FZFNyeW7Di331jep6EePFHi-UW4a2rVuss21nlwYvGrdpvFgcs3RBTbMwJ2npEUW3XFoQeFFLtTiALpUB148XW7xY7BlbWKUEe6Rcouj2TXhusJG0NY_K4kXNlFB6UXG6l8pYzkxvw1M6b_4cYhStBy6jOxQUoSMIRWtQNYrucEu1AY2pxSArrGpccwEoKIgb9rm1vOHubARF5Bq-dFJyucctNQYjQvZClVR43AQriRtVdQJcz8wqIShwDogCHByD839RmWRRnWGvnKhAUWFOpv9xr7m03rUPvTiycZCm33bKWA20QSR1AuHS-hPnTsqP-BiRm-A4oOmjgMMaXmBNk4i9hHUtgMqu_Sy3fC-pQCTrpI96FRbKLf4ByJztERmZIaM0yViG_fn-AkwdQJ96KD9RWQlnIBsYmo1ZK2nhaJesdUcn8P_360fD-qskzNKSxSQhwbAHwUtENscs3aXxQnDZHRd72fUdbGnUMvWQ_ZQRcDwDHGd5nocTKn-WxuqOWa5k39DQ00_0AFtewV1dA7N9FMwxU9LY99LZ2x_RJVN0SRQzkkzRffIa_9zae2oGl-tOziT5m5f9oMaxuZBUnAw3v1FJ9y61rZ9NcYcjfb9EBtTjntLZnkLKSAUTZBVYysVw1qgxv6kKxEv4ZvuZM_EDW3XPfyd_PUMjf6uZYpOworSeIPOcvY7qf4maYfMjNdmMmqpmSR47G1QqeWpUZ7CkDZjWx-28h3TXcFsYA00pTj-BaH2dh6LiSyeHHEPd6b_nLbjCCJGsB-AH3VD2FWRV9AGCrLGxVd_TSf7PDnatnRPgMkT7TXMLu3OemEwaSqldBQIs_MnE3jM9-39m9kEp8dkXBRvei-B7bF7Mmhp8zsFaSdM1zmuF8-zQ-rvl4oUwnl84ql7FMF0TGm6HFXoAc9rPpbmLzlQyeA7K1cafwHtQSfNMo1urudx_gXrefFZ08fIWRzdPE4TVneEH-AL1Wtr7C-IP9RCXHYPbk7HgHfcfUcp3eO2d57F35PC2QqJwVlPFcRWtVslbIHxjXxo8aCqN8Efvd8kv_F9sH4YS4UPiyIBsxD2rr9IgXoXAprjvXWVabB_mqLbQ0EFppVJi_PtefAOCER-55BXy5AX1F5O65e4IrLNwlnD2MaxBPmEtmqFaUVitwimqjXY-ezpGU1gfA6g3OQKK54BIHdESvxVGXmTq9R18iPZ6WCPoWckXZ3lZ1tEU9ABvxH5QjD6H-jxEfsABH-CMYGe1XFClaUZDzFi4a9yb47RYKLSmJxdwozV7pLovlx2oITLN2sga918NPgBzD2qEvJpDTuogqPCZ1HX44E_sBPi2oUL8DZhV-uemFS_iv8gubo0hPp3HeaVUmh9AX6RDh2lWt8QJCeI89wxMFq076VW3055E39sfm6cCjVEhSsq-7mrpYI5i6A0PwliHa9U0VFaXJ_BFZz1lHOVTKZ2X4mMefcoxTxN2O3Y8hmH_j5Iazlw-4g6Tp3A22DXsrKbcmnP3xXJUCCd0pSf9bkgxxtni6T2sn4LIStCmrCgiq5Eqkp3ffX9R5QvOyC9fYVkdTfzw0ovqU8W4pTWI04zLt_32_pzbA3zSNwkutZSWOf5_1oIjeNlSbZfBq04n4TyjQhyH1auseSfRZ0nsTOUsDl9MdAMmMWH9ho3p0GJWV3zMx4Zhl6NyLqoKSKIy_Ksc_KJK8zoBv6jyV27sjIC3Iu2Tw1vKna_9t6Lv52z6wvLBzDluRuaiC-bqVcpeQ3k7-T3L5S8k8dcY_zcy9_4q0bMxchVflAxRzAaVnYuGM1YfF4rhVP95dn1vmeCAjDBnZVjASFwlMXYA32mnX2m0k84_aJK8yv_iB00_ZVxwdbkgxAHe7dycnbFU291kF99tAuKJieyihAJKE9wv_l4v-LV6S2etYtBa-cu3_tajHopwzAbV1pQLqPA3bh8xHLlTRQU4jLwkOgN4ccBWYQOA-aRadjae7vj66zBwh8bNnN48XVXXUZVHOb2C63AVh0kShWl69Xid5VEY50kchhnQJC2TvE6TmNUBi_OkTsMrfk0CkgRRkJMgToN0SaqEBnEZ0VVaEagyFAfQUC6WTt1LpfdX_lLqOoyCJEyuBC1BGH9BSchAEkHJ7ZW-9ndZZbc3KA4EN9aMS1huBVyvPVf-2gUMdg5Pg_FKJA36e5JvjyBxZ7jcu_755V4a4KfrP0xrC_p8N3guaXAFNZfc_bzqtLj-8Su4YcOHa_KvAAAA__-o7xsT">