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

    <tr>
        <th>Summary</th>
        <td>
            emcc/clang -fcommon crash on very simple case
        </td>
    </tr>

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

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

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

<pre>
    ISSUE: Emcc/clang crashes with -fcommon option, no crash without option.  Crash on x86 and M1 Macs.  Not reproducible with cc/clang.

BACKGROUND: I'm compiling old C files which share a header file with old-style variable declarations/definitions (not prefixed by extern) such that -fcommon is required to avoid object redefinition linker errors. But this case even crashes simply by including the header file in one C file.  Crash not reproducible with cc/clang.   No crash backtrace file gets generated.

simple.h:
int myvar;

simple.c:
#include "simple.h"
int main (int argc, char *argv[])
{
}

OUTPUT: emcc -fcommon simple.c -o simple.js

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: /Users/mm/Code/emsdk-x86/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN -Werror=implicit-function-declaration --sysroot=/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -fcommon simple.c -c -o /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/emscripten_temp_8ya1rca3/simple_0.o
1.      <eof> parser at end of file
2.      Code generation
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang-16 0x000000010f0c4658 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 40
1  clang-16                 0x000000010f0c3275 llvm::sys::RunSignalHandlers() + 85
2  clang-16 0x000000010f0c3a6e llvm::sys::CleanupOnSignal(unsigned long) + 238
3 clang-16                 0x000000010f02b901 CrashRecoverySignalHandler(int) (.llvm.14840184636118765361) + 129
4  libsystem_platform.dylib 0x00007ff809a68c1d _sigtramp + 29
5  libsystem_platform.dylib 0x00007ff7b23455a0 _sigtramp + 18446744072242448800
6  clang-16 0x000000010fff9339 llvm::AsmPrinter::emitGlobalVariable(llvm::GlobalVariable const*) + 1961
7 clang-16                 0x0000000110002e27 llvm::AsmPrinter::doFinalization(llvm::Module&) + 103
8  clang-16 0x000000010e97b0d1 llvm::FPPassManager::doFinalization(llvm::Module&) + 49
9  clang-16                 0x000000010e972ca1 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 5521
10 clang-16 0x000000010f9d7fe6 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream>>) + 9062
11 clang-16 0x000000010fe2dd4c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 2492
12 clang-16                 0x0000000110858d2f clang::ParseAST(clang::Sema&, bool, bool) + 959
13 clang-16 0x000000010fd56315 clang::FrontendAction::Execute() + 85
14 clang-16 0x000000010fca0f40 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 800
15 clang-16                 0x000000010fe5ca68 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 552
16 clang-16                 0x000000010dc526ac cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2204
17 clang-16 0x000000010dc4ee34 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 516
18 clang-16                 0x000000010fb1b3a7 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const::$_0>(long) + 23
19 clang-16 0x000000010f02b65c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 124
20 clang-16                 0x000000010fb1ab34 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const + 420
21 clang-16 0x000000010fadcadb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 1019
22 clang-16 0x000000010fadcd8f clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&, bool) const + 143
23 clang-16                 0x000000010fafd2dd clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&) + 493
24 clang-16                 0x000000010dc4dd00 clang_main(int, char**) + 13424
25 dyld                     0x00007ff80970b310 start + 2432
clang-16: error: clang frontend command failed with exit code 132 (use -v to see invocation)
clang version 16.0.0 (https://github.com/llvm/llvm-project 800f0f1546b2352ba42a4777149afb13cb874fcd)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/mm/Code/emsdk-x86/upstream/bin
clang-16: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/simple-06200c.c
clang-16: note: diagnostic msg: /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/simple-06200c.sh
clang-16: note: diagnostic msg: Crash backtrace is located in
clang-16: note: diagnostic msg: /Users/mm/Library/Logs/DiagnosticReports/clang-16_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang-16: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang-16: note: diagnostic msg: 

********************
emcc: error: '/Users/mm/Code/emsdk-x86/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN -Werror=implicit-function-declaration --sysroot=/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -fcommon simple.c -c -o /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/emscripten_temp_8ya1rca3/simple_0.o' failed (returned 1)
make: *** [simple.js] Error 1



cat /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/simple-06200c.c
# 1 "<built-in>"
# 1 "simple.c"
#if 0 /* expanded by -frewrite-includes */
#include "simple.h"
#endif /* expanded by -frewrite-includes */
# 1 "simple.c"
# 1 "./simple.h" 1
int myvar;
# 2 "simple.c" 2

int main (int argc, char *argv[])
{
}



cat /var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/simple-06200c.sh
# Crash reproducer for clang version 16.0.0 (https://github.com/llvm/llvm-project 800f0f1546b2352ba42a4777149afb13cb874fcd)
# Driver args: "-target" "wasm32-unknown-emscripten" "-fignore-exceptions" "-fvisibility=default" "-mllvm" "-combiner-global-alias-analysis=false" "-mllvm" "-enable-emscripten-sjlj" "-mllvm" "-disable-lsr" "-D" "EMSCRIPTEN" "-Werror=implicit-function-declaration" "--sysroot=/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot" "-Xclang" "-iwithsysroot/include/fakesdl" "-Xclang" "-iwithsysroot/include/compat" "-fcommon" "simple.c" "-c" "-o" "/var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/emscripten_temp_8ya1rca3/simple_0.o"
# Original command:  "/Users/mm/Code/emsdk-x86/upstream/bin/clang-16" "-cc1" "-triple" "wasm32-unknown-emscripten" "-emit-obj" "-mrelax-all" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "simple.c" "-mrelocation-model" "static" "-mframe-pointer=none" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-target-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/Users/Shared/emcc_crash" "-resource-dir" "/Users/mm/Code/emsdk-x86/upstream/lib/clang/16" "-D" "EMSCRIPTEN" "-isysroot" "/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot" "-internal-isystem" "/Users/mm/Code/emsdk-x86/upstream/lib/clang/16/include" "-internal-isystem" "/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot/include/wasm32-emscripten" "-internal-isystem" "/Users/mm/Code/emsdk-x86/upstream/emscripten/cache/sysroot/include" "-Werror=implicit-function-declaration" "-fdebug-compilation-dir=/Users/Shared/emcc_crash" "-ferror-limit" "19" "-fvisibility=default" "-fgnuc-version=4.2.1" "-fignore-exceptions" "-fcommon" "-fcolor-diagnostics" "-iwithsysroot/include/fakesdl" "-iwithsysroot/include/compat" "-mllvm" "-combiner-global-alias-analysis=false" "-mllvm" "-enable-emscripten-sjlj" "-mllvm" "-disable-lsr" "-o" "/var/folders/6h/4hbjlrq173q56k3x6x03h7bh0000gn/T/emscripten_temp_8ya1rca3/simple_0.o" "-x" "c" "simple.c"
 "/Users/mm/Code/emsdk-x86/upstream/bin/clang-16" "-cc1" "-triple" "wasm32-unknown-emscripten" "-emit-obj" "-mrelax-all" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "simple.c" "-mrelocation-model" "static" "-mframe-pointer=none" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-target-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/Users/Shared/emcc_crash" "-D" "EMSCRIPTEN" "-Werror=implicit-function-declaration" "-fdebug-compilation-dir=/Users/Shared/emcc_crash" "-ferror-limit" "19" "-fvisibility=default" "-fgnuc-version=4.2.1" "-fignore-exceptions" "-fcommon" "-fcolor-diagnostics" "-iwithsysroot/include/fakesdl" "-iwithsysroot/include/compat" "-mllvm" "-combiner-global-alias-analysis=false" "-mllvm" "-enable-emscripten-sjlj" "-mllvm" "-disable-lsr" "-x" "c" "simple-06200c.c"


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW19z4riW_zTOi8qULRsDD3kgEKb7bjJJJem52_tCydIxqGNLjCTT4X76LUm2MQlMk56emd2qTqUS2zrW-f87RxIQrflKAFwGw6tgOL8gtVlLdXnLNxXZXOSS7S4_Pj5-ug6SKbquKA3wgpZErBBVRK9Bo6_crFFYUFlVUiC5MVyKAM-QkJ7EEcjaNEMDhGbusRToZZwhIhi6jdEtoXqA0K_SIAUbJVlNeV6Cn33PdRBE8yCa-r9X09l__fJw9-nXuRXuY4BHFaKy2vCSixWSJUMzVPDSyrjmdI30mihABK2BMFBuyM8vSxZqsysBbYnixPJlQEuiiJVYB3jBoOCCuzsU4LGQBm0UFPwFGMp3CF4MKBHgCdI1XSOzJmZvEq6Rgt9rroAhIxHZSs6QzL8AtbruZ0YlF8-gECgllR6gq9ogs-YaUaIBwRZEZ3PNq025s5y5oGXNrL5mDQeacYGkgMYEndXFtwyMrBMaz-WEPhtFKPgZV2A0WoEARQywA1c4gWCwDpLmARcGVbstUUFydYSQdoQBTrwOgAKMu3kw7s1DuLBWt9dEraiNLromCgV4StRq6yM3wJNmxlHLcTTvs7779HT_6cmGClSU7v3TioRC2V5_0f0X72-up4_XSNd5xQ0iKK9X1oZSGevPtTEbbdXBiwAvVtys63xAZRXgRVlu23_hRknr8QAvuNY12KBysd8qb933yupWz41zFgWtgSEta-Uf2zeJ1pJy6wqkaoE0VXxjGq88GkKfEaurTWfoaBBEk3slV4pU1ox1BcJYwVGAF580KCtSZeWdSQYBXkCl2XP4Ms4CvKg32iggdjTnosOA0BC1AoO-El0lOKzFs5BfRQiVFwYECgu-ElJBCC8UNj6BwmLLNc95yc0uSOYMClKXBoWVNRQKqaxyLkCFq1LmpAxJyYkOiSDlTnMdJPOClBo6chA2YXs8Q_2l_NINM67deKkVCufXt4-zh4_3T9e_ovDfLtGCZG59zik3YVELakUMe9mPwlDvtJLSBMn8fZbai2QNRuja0jaTofC_GxNym4EtC7xo4iHAi4I8g2blGZQW9PqIs49oF9QBXthExItClsxLn60DvEjX-ZdS_R6Pkt-H2XPykr1EyXqUr6MoilZW5qcDJZYGqs1yvCOxoiSxqjg2y2ggfYTFNsKCZAayCJJrtCFKg0LEIBAMycKBiKfEltIar4UTWzNeBW5XN_SuymWJBKnAgS8IXStAO1mjNdkCcunlifh_QFng28laofvp0wckFdJgXHaB2HIlhQ17i_MoyKKbm99ul4-fb6_ubj7-z_XD0r4SZJFN6420cGMk4sYiS5dFCDlvhHGGopfI_8RREdE0G46dLJY2meqd9hf3igvj1HryST3eEynydSnbeMlsYnNh2aEAX6E0aszaY_n651CEBI-Gx0R4qMUjXwlSfiCClS4Cxi2X8bBxyUnFEpLBsVlnJRBRb-6auQM8roXrJRgqpVi1DHAy9hySM9XA-SSKfbl6ACq3oHYH0vtK4KcfD6xggzgdp1E8TrMki-PxKBsmWdzyj9u6kCJU8lzvtIFquSmJKaSqBmxX8rwRYFQU42hCsjGNGVpqvjKKVBuvRTPJ8JxJRjlO0uGQRK8micdpmo3SNBphnOI0HY-jxsfZCesXxSRJJj3rT3XlAgqUv4eKm18cTv7WtC4HAXY4hKgU2gR42tlmksVegNE5zomjKMKAR38gD5MLLkjJ_-Nzui_LrWS1FS_ruEeJZz4-rj1MRnnE4h63xf090fqWCLL6HoZp48TJeRkFkxGmpM-_hBWhuyav95J8rDZlk9D1N0QYDnFj8Tg67vIJGxWQ-TE_yXXFzRWhzyDYXW02tQnwuDc852QlpDac6mux4gIaKOmRfHB94SMQRdd3TRVuYuE1qUXlX0B8g-rJ1f1vEN0QsTpGsjfPo1FcrB6gOHzcWm36asLGCFParjG0YX5kucT-ohb89xqWG6OCZHYItJuvihtYtnB77O2mFVkyKMHAN2ZIru1v49dJlDUdaxwf9ytgxlJ6RJ2ZFLqu2nj2IPekiNClC-lPgr9y-PTxaSaFgRfTCyycTloB8Hm5PB6OGS76At3bij19fDpk9wgVaTyXS1nu_zeaD5usipPjirNhlsTDPp-FsuJ3jvRB_gK0NnCkMsXp8XkpiYo0Ooxdu_gD9VFoQwSFg5nbqBmfFmRvzQ6YW8G_VbVgSEk2Pshaz3Yv01ZS8laENzLv0Xk4bD2anSUEo0OcEYoojZd2zXSARFOlyM5mWjJza6euFNgYbtZT-_IwQ3aV2pMF4yhthBkddQejKUCSolbtWfzkgqQnwmNFyvI3oEY2iHlEkj1QxlnDb3yeB_I4T8jIyd2DkralXyqnuhv1Meby15JQUpZ2zbUshBVp7xqm-LZNy9ksnsmqIoK9DtejJn4LLX73g5QHoLLHvwZMjoFSTjSnFnS4FczZ7DihHVkaRbhd1nm6U3OSsrTRaJc_HaGlne6z27ne-8a9EuB0GTmi8WF717hpcqJ_xHk2pD2PHDR2LY51bSopoNwdWPWPPdg1eU104ujcaCF5kqKf3n7jbd8p4Qb_8IlqRhglLD9pPwdq5A26t0Y9QMBXL1qCUx3FH5BOD0pUX5c4ipsKhfFJZdi4eK8y_5K5Pq3Jv2R-w7U51fi8gcK3XtsQbh3m1jrnW6Fx7SlbpE264jNXY6RgmLFT3Oe964N6d6TQnTLpP2GadjnQGiM9s76mjEUNwLQVtpXB5em0v7ZK0g6UhojtSvZm7v38fuU5ivIkjpA2RJmmqUuaFqCVz21f-n2rqRcEFU0Tg2ijcEF4Cczv7MILtzHIAMUJtrhZa0DhFhmJNADiva5k0uOEtqA0lwLF2SAaRPbF9-1z2g6qiIp4mGY5ToY4Jykm6Wg0itMJKfI4ofl4lBaUdXz9ksKqdXI3sSFcKyAMVZKBXXWhjdT8xQ-5Jqosgc25-r6dzTfGFtIuBKaIdassVOmVm7zZv_4Tv283madPT9PZB_T04Rot7m5u7v798ddf0OLjzfUjerpzj68-_YIeru_vHp66Tan7Y5vEY20j8eRGcUegALnqAAwR0015pgn-zM6i3z4MowxHER3Qf4ivXr-H8ezVuQjXnfHeGTyvIvOG54qonb2SK_t0v6p_cEcNut10D-NsGSSzz58_fw5vb8P5PPzw4fb28TFIru3ztdRGkAqC5HrgzhPeJ9WYrqXU_jjCv-_PftyRFpVKgd5IwbQFELfL6nkcgMe5mfOD8gcqSg9gMcCjn0caP480_uSRBh61hTTAYwWmVgIYirtQr8gz-GhrohEFw6v9-eFwjq6tM1B8EO29v5SYvwBAA5ygGAUYB8ksr3lpQi5c24NfjXcnsb0RXiBb6xdWG3jZEMH8-XZYKHB7X2HjIe3VXpx1hhvgBATjxffNfFpaPzLoLOFYtvY-cgCNE4RfzYVw3yM_8LD5L3R0C-lWH1-P2gN9UKiQCv1THZwVyK8IrOWao2XcAKo1doDx6d7Ojx8B127kGMS2g5XXwN-cB7dHXz0OvUdJezDcPpo3F3tMbkfOQ-aW-i_B53Zyj73t3bew-p1vedzuXObRu7nt551zU3shm4u_A9V78HGn-IoLUrYLJxuwjRjf1zzYxqfVjcbtpVF8U8K58Q8VN6HM9yGnoCQvISnL13FXKOhimJZAVEi0CXMobPrk_mzhTazaBN-C4gUH1RukRLFwS8oaQnfO3nEnXIS2AXSPT_jRitisIkO_KmvoDDF8T1UoUkHoztXtEn0upOjkL4pNSKWwTbUN-n0mFEKGStaCcbEKK2LW3XRuWa9qaqTyCb6X2iNOSDd188R9yqAnSj-NrR9NqCkpvVX5C7DQZWtIdPiVKMH3cc8gr1crUKGp3eNkvmJ5L9q3oMgKQrrf3wiZXYr20_hxTRQwF1CULpv-2c-gwK_e3EtdTrwjGEuet8EY4MU-HE8DEz9Ehx8PN87dgpSOk4HqB-m1x5wfyOaP9enBXJPGb9P3bxXje0pL4UL4uyO08JlR8oq3Ho4nZ1XoYiVqGjZdSZDM0wEexGdU_YMSYm9LqcL9mlK_t5CdWbr-bzQUf2tldBxfmgv6Fux95fxZIX9WyH-uQv6oDvsnDP5_gsHjoLTf-cAHy_gLdpmwSTIhF3AZZ6M0jnA2SS_WlzDKWZRSFo8ntAA6HEWjYZrnkwQSKJIcLvgljnASxfEkSpM4SQfRhFE8meAE8mg0JHGQRlARXvqPHUq1unCf5r7MojgZX5Qkh1K7b1JgLOArcoNWuuH8Ql06aMnrlQ7SqOTa6P0shpsSLqH__Ypu64u2X5fYgto1G2HuOwEXtSovv__j507m_w0AAP__K5lc3g">