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

    <tr>
        <th>Summary</th>
        <td>
            Crash @llvm::GlobalValue::setSanitizerMetadata
        </td>
    </tr>

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

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

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

<pre>
    This is a regression from https://reviews.llvm.org/D126929 (e7766972a6790e25dbb4ce3481f57e9792b49269). Interestingly, it doesn't happen with the preprocessed source, which means the reproducer that clang produces on crash doesn't reproduce the crash...

Stack trace:
```
1.      <eof> parser at end of file
2.      Optimizer
 #0 0x00007fa4de5cba8d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /tmp/llvm/llvm/lib/Support/Unix/Signals.inc:573:3
 #1 0x00007fa4de5c9c4c llvm::sys::RunSignalHandlers() /tmp/llvm/llvm/lib/Support/Signals.cpp:103:20
 #2 0x00007fa4de4f0b28 HandleCrash /tmp/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:76:5
 #3 0x00007fa4de4f0b28 CrashRecoverySignalHandler(int) /tmp/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:389:62
 #4 0x00007fa4ddafbd60 (/lib/x86_64-linux-gnu/libc.so.6+0x3bd60)
 #5 0x00007fa4de6b7b1c llvm::GlobalValue::setSanitizerMetadata(llvm::GlobalValue::SanitizerMetadata const&) /tmp/llvm/llvm/lib/IR/Globals.cpp:232:58
 #6 0x00007fa4de6b8ae2 llvm::GlobalValue::getGlobalValueSubClassData() const /tmp/llvm/llvm/include/llvm/IR/GlobalValue.h:164:12
 #7 0x00007fa4de6b8ae2 llvm::GlobalObject::setAlignment(llvm::MaybeAlign) /tmp/llvm/llvm/lib/IR/Globals.cpp:130:48
 #8 0x00007fa4de6b8ae2 llvm::GlobalObject::copyAttributesFrom(llvm::GlobalObject const*) /tmp/llvm/llvm/lib/IR/Globals.cpp:138:15
 #9 0x00007fa4de6b8b61 llvm::GlobalVariable::setExternallyInitialized(bool) /tmp/llvm/llvm/include/llvm/IR/GlobalVariable.h:159:37
#10 0x00007fa4de6b8b61 llvm::GlobalVariable::copyAttributesFrom(llvm::GlobalVariable const*) /tmp/llvm/llvm/lib/IR/Globals.cpp:480:27
#11 0x00007fa4df230723 InstrumentGlobals /tmp/llvm/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:2331:25
#12 0x00007fa4df230723 (anonymous namespace)::ModuleAddressSanitizer::instrumentModule(llvm::Module&) /tmp/llvm/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:2508:22
#13 0x00007fa4df23b4ff llvm::SmallPtrSet<void*, 2u>::SmallPtrSet() /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:464:25
#14 0x00007fa4df23b4ff llvm::PreservedAnalyses::PreservedAnalyses() /tmp/llvm/llvm/include/llvm/IR/PassManager.h:152:7
#15 0x00007fa4df23b4ff llvm::PreservedAnalyses::none() /tmp/llvm/llvm/include/llvm/IR/PassManager.h:155:62
#16 0x00007fa4df23b4ff llvm::ModuleAddressSanitizerPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /tmp/llvm/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:1192:72
#17 0x00007fa4e2b9f9ee llvm::detail::PassModel<llvm::Module, llvm::ModuleAddressSanitizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /tmp/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89:3
#18 0x00007fa4de7303eb llvm::SmallPtrSet<void*, 2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&) /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:489:21
#19 0x00007fa4de7303eb llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&) /tmp/llvm/llvm/include/llvm/IR/PassManager.h:152:7
#20 0x00007fa4de7303eb llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /tmp/llvm/llvm/include/llvm/IR/PassManager.h:522:16
#21 0x00007fa4e2baa0c9 llvm::SmallPtrSetImplBase::isSmall() const /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:195:33
#22 0x00007fa4e2baa0c9 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:83:17
#23 0x00007fa4e2baa0c9 llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl() /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:344:7
#24 0x00007fa4e2baa0c9 llvm::SmallPtrSet<llvm::AnalysisKey*, 2u>::~SmallPtrSet() /tmp/llvm/llvm/include/llvm/ADT/SmallPtrSet.h:450:7
#25 0x00007fa4e2baa0c9 llvm::PreservedAnalyses::~PreservedAnalyses() /tmp/llvm/llvm/include/llvm/IR/PassManager.h:152:7
#26 0x00007fa4e2baa0c9 (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>>&) (.constprop.0) /tmp/llvm/clang/lib/CodeGen/BackendUtil.cpp:966:12
#27 0x00007fa4e2bacfdf RunCodegenPipeline /tmp/llvm/clang/lib/CodeGen/BackendUtil.cpp:976:23
#28 0x00007fa4e2bacfdf EmitAssembly /tmp/llvm/clang/lib/CodeGen/BackendUtil.cpp:1024:21
#29 0x00007fa4e2bacfdf clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) /tmp/llvm/clang/lib/CodeGen/BackendUtil.cpp:1182:25
#30 0x00007fa4e2f12f9d std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>::~unique_ptr() /usr/include/c++/10/bits/unique_ptr.h:360:12
#31 0x00007fa4e2f12f9d clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /tmp/llvm/clang/lib/CodeGen/CodeGenAction.cpp:381:69
#32 0x00007fa4e1d3f9e9 clang::ParseAST(clang::Sema&, bool, bool) /tmp/llvm/clang/lib/Parse/ParseAST.cpp:175:34
#33 0x00007fa4e36400f1 clang::FrontendAction::Execute() /tmp/llvm/clang/lib/Frontend/FrontendAction.cpp:1028:21
#34 0x00007fa4e35d9e2b llvm::Error::getPtr() const /tmp/llvm/llvm/include/llvm/Support/Error.h:274:12
#35 0x00007fa4e35d9e2b llvm::Error::operator bool() /tmp/llvm/llvm/include/llvm/Support/Error.h:234:22
#36 0x00007fa4e35d9e2b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /tmp/llvm/clang/lib/Frontend/CompilerInstance.cpp:1033:42
#37 0x00007fa4e36adbb8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /tmp/llvm/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:267:32
#38 0x00005569e727f2e4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /tmp/llvm/clang/tools/driver/cc1_main.cpp:248:40
#39 0x00005569e7279d28 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /tmp/llvm/clang/tools/driver/driver.cpp:317:20
#40 0x00007fa4e32e6f65 operator() /tmp/llvm/clang/lib/Driver/Job.cpp:407:32
#41 0x00007fa4e32e6f65 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) /tmp/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:52
#42 0x00007fa4de4f0c23 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /tmp/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:427:1
#43 0x00007fa4e32e7387 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) /tmp/llvm/clang/lib/Driver/Job.cpp:411:10
#44 0x00007fa4e32b7642 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /tmp/llvm/clang/lib/Driver/Compilation.cpp:201:3
#45 0x00007fa4e32b7db9 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /tmp/llvm/clang/lib/Driver/Compilation.cpp:254:5
#46 0x00007fa4e32c58ac llvm::SmallVectorBase<unsigned int>::empty() const /tmp/llvm/llvm/include/llvm/ADT/SmallVector.h:73:47
#47 0x00007fa4e32c58ac clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /tmp/llvm/clang/lib/Driver/Driver.cpp:1734:28
#48 0x00005569e727d6d1 llvm::SmallVectorBase<unsigned int>::size() const /tmp/llvm/llvm/include/llvm/ADT/SmallVector.h:70:32
#49 0x00005569e727d6d1 llvm::SmallVectorTemplateCommon<std::pair<int, clang::driver::Command const*>, void>::end() /tmp/llvm/llvm/include/llvm/ADT/SmallVector.h:251:41
#50 0x00005569e727d6d1 clang_main(int, char**) /tmp/llvm/clang/tools/driver/driver.cpp:515:26
#51 0x00007fa4ddae6d0a __libc_start_main ./csu/../csu/libc-start.c:308:16
#52 0x00005569e7278fca _start (/tmp/llvm/stage1/bin/clang+++0xbfca)
clang-15: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project e7766972a6790e25dbb4ce3481f57e9792b49269)
```

Reproducer archive: [testcase.zip](https://github.com/llvm/llvm-project/files/8916292/testcase.zip)
Reproducer command (once archive unpacked): `clang++ --sysroot sysroot-x86_64-linux-gnu -I sysroot-x86_64-linux-gnu/usr/include/c++/7.5.0 -I sysroot-x86_64-linux-gnu/usr/include/x86_64-linux-gnu/c++/7.5.0 -std=gnu++17 -o TestPrintf.o -c  -Igecko/obj-x86_64-pc-linux-gnu/dist/system_wrappers -include gecko/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DMOZ_HAS_MOZGLUE -Igecko/mozglue/tests -Igecko/obj-x86_64-pc-linux-gnu/mozglue/tests -Igecko/obj-x86_64-pc-linux-gnu/dist/include -Igecko/obj-x86_64-pc-linux-gnu/dist/include/testing -Igecko/obj-x86_64-pc-linux-gnu/dist/include/nspr -Igecko/obj-x86_64-pc-linux-gnu/dist/include/nss -DMOZILLA_CLIENT -include gecko/obj-x86_64-pc-linux-gnu/mozilla-config.h -fsanitize=address gecko/mozglue/tests/TestPrintf.cpp`

Cc: @hctim 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWl1zozoS_TXOi8ouEN8PeXDsZCa7yZ1UkrkP--ISIGzdwcAikcTz629LgEE2duxMdmq3NpXCNkjq091H3S2hMI83l88rxhH8E1TSZUk5Z3mGkjJfo5UQBR9Z0xG-gf-SvjD6yidp-rKe5OUSbs1N7AY4QCPsU89z3cDDxPUCg2InDkM7opbtm4nj0cALcGgH0HqEgwm6zQQFSYJly3QzwjPEBIpzyrMR9gRakaKgGXplYoXEiqKipEWZR4CMxojnVRlR2ed1xaIVWlOScdVMtYqriJbwkwgUpSRbouYeR6BUVBK-6gna9lD91dPJZDIy5iNjWl-fBIl-IFESEGk190au0fyrnyZ0CEbWjObJyLpGBSk5IAD5NItRnqCEpbRuiWXLb4Vga_aTlvU9MJ1lIOPNgD8vIXZMnSgkfoyklaVIa8o3vP7yULJMKETPChD2u0YleV3kXJSUrEfYVSbNxEi55kasC7iqtt0HC-H6VBVFXkK7m-8Ze5M32DIjKZ-wLIJBHc-Cq9UhNXeQBpEdDSF9rLJ6pK8ki1NacsB6BpgWRVQUMJhpSBTY6GBgDYadGCH2US1qplx8ohzV-JFG-QstN7McSPkmGqGeK_XvRFpDIrX-msKg73n2PwLF8oFeUxd3YOw-mJgkYewaSJm4GffNdxeuPU5ZVr2Nl1lVP4gmPJ8AN66MN0t2AXjdmI6moBt6odl37Zc0D0n6J0kr2viaiieSMSGpfE8FiYkgGiP3euw1R1GecaHo-o6dbh_hUg_YsgJYID3kdxq4Oxr4hOJjGiyp6N17qsJZSjif13pISAreIWAwQ9Iqpt2NHkY14GQlueva8trznXcKym_hXzQSW0NPU-DWmkpC9Qx8TzYhVY8-Yj_TMuBq9-znn4ssyovNVIiShZWg_AYyxgAB6g6tq6cfg-rLa282BrtQQ9cccHXJSJh2fL1-g6wDczTd3EomkhTIGAPkMM_TI7iOe7qWUTvbkRPV8po0AeHSOB_nSUZtu_ySWW1fMgD34GrhPYHE5GELcjWklUqyr-l-XBCkpownebnmUuq2LxFQVcCdaRzLEmMbC7az2TLlh9OBwUNgwBYky7PNOq84ysia8kJlwqCZEpDNU7oro37GtljqVvpcam69H4o-qJ9jSA5j3Oln7egX2knS48bTGoj6IMonCrNt9pKzWLl5hnAFZcZ-m6MJdo_C0_mzTD9df0VgW0WrvhPs4yAfQFdavtB4CtNqwyk_dPs8dIqsDxCM70lGlmDEenbJgN9jq_MhbMAe-jlwnF5Wlnjc43iGuSmHbSq4KjtEyVlvmFob1mIBbux1AXr8x4hsmoFyQ0_vfkajOAySgNIe4BiyPUsbn0gj5jFNh2Brah6xltZugGrnW6udT7_PBe9yTK2QQI7imioArc7ieqb2LMOi4ZmhIy9oSUQO4Oeayu_0lUqdpdeBQKM0wmanUnBcpQOT-ZAWA6w4F_hJMQgb78Du-r_L-P9ZqirLOFhaxnQ705h6WCDEiIJhkt6ui_SK8KYAYlw9-lANPsw2M5Ch2uomEMYfxDbyroeefUbu9eUi1-xRyzoLo-bZ1uv_pBs5e1vO7KP_FOSWbeuTwj4Z-THUerzSsX9OteMYOm7nOO4DMQiQ_ZZ6B7tD8N4piK_XTEw5p-sw3XyladEWw49V1mxEqXz_wAqaMlUYqV2zutEViX7QLJ5GdUkwQ1zE9ZMqY_-u6KIQekSRm1DFa8kEXbRbUb1OMU1IlYoFpH8q6Dsd61BXh7P3xD7D-u1bJYpK3LA6qp4ic6dXJ1AZdaICT1HmxcQYcmVtpraWmkFN84XKsqmx2XfB0qZiCly5lWR2BRPeKZhIlMQJAo_IUZZ064xfkam2r3Av4vlDMvvs-AVppoFtPZ3jYEhcj1pScjNQ7QOdeXNGllnOBYv4dbZUxFRM6DX5SklMYS6TMlpJKoO7evtJWtMG-zutnkm5pOKdRnfwbahJL7rB0j1bPtJkqJ5t4tp_1xz7FXKbpi-jVG_JqO1mU5yYOAni369VG5p78rYxueKlFoWjEb5S_zcmzPWbkAm5JOp61lnONfRpbJlDiu67dgY0gZVVE3jr_WG19kpV6P0OSxud_NOn52YD-EBhdsg9zbeaS9vNY7mv4gYdbK32MWMLlmtBH_aDfIEBGHRQT3RNGq7X22Xt53vw1HDtJwzbEsdTNZnd4dLqHcu1DSMx-7huSmmU7VSpw8gbjSpxqADTgbT9e181S0EU8_Uopu2zU8uJAwhlvTl9XZZ541aIHA9bip1Xs3bvANR4imzYs3fI5pwMpV0TNf45qxAZxGKp4N7D4g5h0eLtuoCUWspNBZJFVPNVG-n8w649hfU9b-6K614byZLa7gH3dIqROAx9LSvVELsBX_KI7MPd0294_3UY8LPyys1BUe2GoevJ-dED32Zwx3ED6mEvwdRGUWQu1oTpa8FpWZKNzEDWLFqRstskltEeso92D25sV_mHdRCAWgbFuGQv8u3WTSu4hWvLuWMbHdxgB24QQw3Saj0zazPsbjz8SSNgbrOe2cd-lBd7EOsvbRw0pT1xB9DW8pSFqZu4DtpuKJwSUeatpH_kYbunbuy4zTaHxEiL92ZvUmWK-YtSOU09rRFsU1kE1oEy6sciyaRpOjI26tbEnJlAqDWkmN3wOEiO7mZd0hB9FdlVMk2h0MvIi0X09maa9Y-QcBbJ9MskKOU3rbG8sRAlkXm1ebwzHCgn6S9D2Pa5bDLt8sx0G1mb3I69lKzDGLKS19kKNM2lh85eGz7f3TROIOn1G4DlzRpxJPc2OnfuvXqOYKHe2WzoNe6oXXE9kYTK4w7-qZ7_lNfHNpaU7LKabe0w0rN8D_1fM0ot-ApSilPWekOzXuE2e8FFrxxw6LnAnEM2VjmA7FU1reG13LPTUTY4tFY50nSqlXKHKpYDevfwttHfkPp3q03b2VU_DoNz1Qfz8sO6w9M7xsWhRdheMtkSoyBMckKdzjjdXP3tiM8ymiPrqm7hZOtlFY4cn0TDOtUbkrMq42yZ0Vgd9WkTBV0XYvOrm6e1GBUB1REgu9uGsr0hmAfsOO991yqegarqECd-o29PnvrzfmlhenWF7Hc22q3VYjc2z3clZz_pZ3rS2ClNdku0wyifgVXgDhWS5DT9BJO3deeWtyrSfXBXt6cldkwVkbdqOsaQmgppWzq36FWamZ5bCmt1pmPKigF370Ec7VBFTKgbGwQtFvI8FmQ4SDoKBZpIEVye1Jp0X2WjsWo0kefxLHWIoPeSxcE7uvlJBIOrHs2BME0HeLCk5kjucWSdSvXmx5XxFkLv7aEw9XCs1EG0WV42ZyqTZi0DDq0dmxBYxMT1iU36xmRYjikyLbWVWnGKxi9I5IhTCgTvFlV9SQhsqE6ems7EmKjjbPrx0yUMXkHGzdc6NcZFmasjRmecQB08yFlfH7tTpHJrEVwr9R45V4JyEcFsnfxkxciZn40PfsqjoJI6fmC6OMDSO_1BW1w9CK2BQVoOK80WEqqyQu4uxfVGPwIder5E4zHf8DLPBWo-x7sHAtH49uCz0bEdMm8C7jmz90CTvQFVQJmrh_KB6aFxjp7BOurQazLJ0ThCIHdJox85dMvDv1rRRaQNHTMZY24An6DrxWspDxOXHI0bPKgdAYJRwuSEXkbRYsXimGaTFRrP_5hfX33_AmBM-PH8eHt_fz1vft1_-9fi6_RpAZ9f7r5f9-Cs859LebCw9ig_CehH-jTKtbqc36WRBnX1xzpnvCg_2pPXJry9u5suZne3138873vlqLlYmpJx7TfpqoQ350LAPaQ-KYIOOAQ-e2SSoVqf9bNITSPbWMFybI0u4ksrDqyAXAgmUnrZnCq2jS47nnQg9qIq08uzwwTjvFJxwnEN17hYXVpOEoYGpWFsRmEMQc6E6GHEoeP72DcC_yIlIU35JUSpEcYZfUVqCPgOgeqCXWIDY8M1YTTLw-YkNCAAeWHiuUEcGWYCelHIQen2ZP9FeakghdWSS6XBld2x_wvCVa1ClTgYn1RilZeXSwhAMavWF0r2pcL-N2Cz5w4">