| Message ID | 20260505223045.347444-2-feedabl3@gmail.com |
|---|---|
| Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id CA92F4BA23DE for <patchwork@sourceware.org>; Tue, 5 May 2026 22:32:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CA92F4BA23DE Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=q0ufmgQm X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id 4C2BE4BA2E07 for <gcc-patches@gcc.gnu.org>; Tue, 5 May 2026 22:31:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4C2BE4BA2E07 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4C2BE4BA2E07 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778020263; cv=none; b=BtqH7fJncvvNA3PRM1Vt8Ota2jIlK8AySA6dSKnh0NJYtQb6d/NQMjUEUf+AIPCYXtaFSDCGCL08jpfHgltNe4uVw8ecBl15I4wVlrnUVb9WIUR/hX0Xj/hgnpU4tYJhJr3yUIuu1uuMPw/YArMo+AtZX6umIBQ/VUhxLCMcwBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778020263; c=relaxed/simple; bh=HXmWdkd36GaEaHv9jbyCQxevPg62eQycmNlUOPs2uUc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=FdaS8k+jRUqRoylbyttdCkCofDZU0s7uAtHA+o5vSRS5G+RuoLHopP5mAb9IikLrIjVWAWlmHye87fbe/TeWa3zGesyKSyDA6sZM5YPcdHBHRQNeOoZ/Ua2Hjqd2L2WcONkkf7vWi0eymo+iKamSKaDbbFTUD7Nxs/PFD0Lihjg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4C2BE4BA2E07 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso55443515e9.2 for <gcc-patches@gcc.gnu.org>; Tue, 05 May 2026 15:31:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778020262; x=1778625062; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=SdY46yrwVT8PfiuycWXCbykDrpFsiD6BmGhbptS37Jo=; b=q0ufmgQmJk/ItXeWzt7MYRfqKqGBLG3NY8QqmqIFPEEkFVIDCpbNGfTLiN289nx8US yH0DJS3ceY/WkrNgBKxwXvyS+4nOUAGG1SaIzQqOyCUcNi5FgZKTXVFAJStjZLsY8Pry BUB2Pqq1ZeGV+QaRCTzS0G7/zcJM1ZwHA2vnqAcuacOm9Xf2veLgP9kfBWKhap01mQBK rQMVSfVae9gwKRBJVRGuKkq55QYRoZc6RTMiZboArN6bktA2RMQnCxFfK9dCey423rlP P+AOi5pqOsKbqdt9MchHoOzOvdF1ebBmt19Kw5wcNsuB4ruPF3bru4UFuITFDe8jZ+FH r7NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778020262; x=1778625062; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SdY46yrwVT8PfiuycWXCbykDrpFsiD6BmGhbptS37Jo=; b=KrcpxfQ53Z6mKM+/sIU/ckLpeEh2umFKk5O5SJQs8Dl0jS6T64/5fS57MvmDAiACWF RRM5fZW8w5gfCinAnN5ze1GXf6V13uqtPqvWW6jNgYyJn0TVbm/O5ge4WkrMell1cprB UpzzukZWlLHABg2r/Ive318XSTd0b9T8/x9K9TK6rLAMe36StPueiqfu7igZsp8YVBwp s6Nkh04KsyRQFzay5gOpcjWC3v35aDZXuwsf9fyj7xFaCvnqhd8bd4C/CPSotjnfZqGk mAz+Ynzlz6MgZgxA1zk3fw2gs0wvzTyvhJw1QzvY3koDYvfHYEs7dMYDSRZSiMBwFLu0 Tgkg== X-Gm-Message-State: AOJu0YygY5amiugi2gTfbjh87h+FDOn3gWZZAF5zxbxiqNro7KpU0cig cYDbey8a1tyuTEXrGMw+Bq24ZDOv214+onM0EWEC9ok1m3qmzVvHEuInOJYRkw== X-Gm-Gg: AeBDietekU3ppHFNOWol6dHkDiu+9C9CcC5QvNv7+aUvBgwEQb9tVEbB08026GUgwl1 BFBILqXQsBf08e+oFnALwkHNz3aHyBYFhKfJSqiLqSXXRj4gkAIwNSs5+pgmY4utC3B6obyETio mG9BiDdV0cQbBS0tyDDAmMQg5zVvTiYemy1oVYGtpiq/xbaa8zBkraHE6YhVwtblMaD24vq+qAj x3EOWQsryZX371Hvh7axdmB8FKeqkIBmhOVFsoW78kIMRtdvtiv7oFz+DjNfTb72kAxRBQ9LbUw LGy3vL8unqm7rvNKLnFVAuHy3Jm0qFqWy9f0ZYeUwhStimKC5bH9jf4iZWtlC5Y5yHYWduKn49n 1TEgbqS/ZRVmcKpVMq8BxOoKZwJsOkHitwLIrZ2GOR4o56xq9tap0kOVR7X/xNZuHvjeE1J46Zp UiE7RXl4yK6bJOjcDR07oRWdj8lcZmK13gfHwJXZSmub7GaH5x X-Received: by 2002:a05:600c:8589:b0:48d:5c1:bc3b with SMTP id 5b1f17b1804b1-48e51f410a4mr12831915e9.24.1778020261829; Tue, 05 May 2026 15:31:01 -0700 (PDT) Received: from 7a38.moduleworks.com ([2a02:8308:900b:fc00:1c70:a43b:cde8:2b29]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e53559d8esm79055e9.9.2026.05.05.15.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 15:31:01 -0700 (PDT) From: feedable <feedabl3@gmail.com> To: gcc-patches@gcc.gnu.org Cc: feedable <feedabl3@gmail.com> Subject: [RFC PATCH 0/3] wasm: New backend Date: Wed, 6 May 2026 01:30:43 +0300 Message-ID: <20260505223045.347444-2-feedabl3@gmail.com> X-Mailer: git-send-email 2.54.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
| Series |
wasm: New backend
|
|
Message
feedable
May 5, 2026, 10:30 p.m. UTC
This patch series introduces a GCC backend for WebAssembly. I would like some feedback on the overall code, before merging it. Please consult https://gcc.gnu.org/wiki/WebAssemblyBackend for build instructions and the current feature implementation status in the backend. Please note that the following patch would be a prerequisite for this patchset, I just didn't feel like submitting a patch with x86 code in it would make sense here: https://gcc.gnu.org/pipermail/gcc-patches/2026-May/715690.html feedable (3): df: Add support for pseudos in function arguments wasm: New backend wasm: Adjust tests gcc/config.gcc | 7 + gcc/config/wasm/attrs.md | 84 ++ gcc/config/wasm/t-wasm | 13 + gcc/config/wasm/wasm-asm.cc | 945 ++++++++++++++++++ gcc/config/wasm/wasm-cg.cc | 621 ++++++++++++ gcc/config/wasm/wasm-modes.def | 0 gcc/config/wasm/wasm-passes.cc | 153 +++ gcc/config/wasm/wasm-passes.def | 27 + gcc/config/wasm/wasm-protos.h | 12 + gcc/config/wasm/wasm.cc | 128 +++ gcc/config/wasm/wasm.h | 307 ++++++ gcc/config/wasm/wasm.md | 495 +++++++++ gcc/df-problems.cc | 6 +- gcc/df-scan.cc | 4 + gcc/doc/tm.texi | 5 + gcc/doc/tm.texi.in | 2 + gcc/expr.cc | 3 +- gcc/target.def | 7 + gcc/testsuite/c-c++-common/analyzer/errno-1.c | 2 + .../c-c++-common/analyzer/isatty-1.c | 1 + .../gcc.c-torture/compile/20000804-1.c | 1 + gcc/testsuite/gcc.c-torture/compile/pr55921.c | 1 + .../gcc.c-torture/compile/pr60655-1.c | 2 +- .../gcc.c-torture/execute/20030222-1.c | 2 +- .../execute/builtins/20010124-1.x | 2 +- .../ieee/bfloat16-builtin-issignaling-1.c | 1 + .../execute/ieee/builtin-issignaling-1.c | 1 + .../ieee/float128-builtin-issignaling-1.c | 1 + .../ieee/float128x-builtin-issignaling-1.c | 1 + .../ieee/float16-builtin-issignaling-1.c | 1 + .../ieee/float32-builtin-issignaling-1.c | 1 + .../ieee/float32x-builtin-issignaling-1.c | 1 + .../ieee/float64-builtin-issignaling-1.c | 1 + .../ieee/float64x-builtin-issignaling-1.c | 1 + .../gcc.c-torture/execute/pr67037-1.c | 56 ++ gcc/testsuite/gcc.c-torture/execute/pr67037.c | 4 +- gcc/testsuite/gcc.dg/20060410.c | 2 +- .../analyzer/fd-access-mode-target-headers.c | 1 + .../gcc.dg/analyzer/fd-mktemp-family.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkostemp-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkostemps-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkstemp-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/mktemp-1.c | 1 + gcc/testsuite/gcc.dg/array-quals-1.c | 1 + gcc/testsuite/gcc.dg/attr-weakref-1.c | 3 + gcc/testsuite/gcc.dg/builtin-alloc-size.c | 1 + gcc/testsuite/gcc.dg/builtin-apply5.c | 1 + gcc/testsuite/gcc.dg/builtin-prefetch-1.c | 3 +- gcc/testsuite/gcc.dg/builtins-config.h | 2 + gcc/testsuite/gcc.dg/builtins-nonnull.c | 1 + gcc/testsuite/gcc.dg/c23-stdint-1.c | 1 + gcc/testsuite/gcc.dg/c99-stdint-1.c | 1 + gcc/testsuite/gcc.dg/c99-stdint-2.c | 1 + gcc/testsuite/gcc.dg/c99-stdint-7.c | 3 + gcc/testsuite/gcc.dg/c99-stdint-8.c | 1 + gcc/testsuite/gcc.dg/charset/function.c | 2 +- gcc/testsuite/gcc.dg/cpp/escape-3.i | 1 + gcc/testsuite/gcc.dg/format/pr78304.c | 1 + gcc/testsuite/gcc.dg/ipa/symver1.c | 2 +- gcc/testsuite/gcc.dg/lower-subreg-1.c | 2 +- gcc/testsuite/gcc.dg/pch/valid-1.c | 1 + gcc/testsuite/gcc.dg/pr115066.c | 2 +- gcc/testsuite/gcc.dg/pr28755.c | 2 +- gcc/testsuite/gcc.dg/pr49551.c | 2 +- gcc/testsuite/gcc.dg/profile-info-section.c | 1 + gcc/testsuite/gcc.dg/stdint-width-1.c | 1 + gcc/testsuite/gcc.dg/stdint-width-2.c | 1 + gcc/testsuite/gcc.dg/tls/thr-cse-1.c | 2 +- gcc/testsuite/gcc.misc-tests/gcov-23.c | 1 + gcc/testsuite/gcc.misc-tests/gcov.exp | 4 + gcc/testsuite/gcc.misc-tests/options.exp | 9 +- gcc/testsuite/lib/file-format.exp | 8 +- gcc/testsuite/lib/scanasm.exp | 2 + gcc/testsuite/lib/target-supports.exp | 39 +- libgcc/config.host | 5 + libgcc/config/wasm/t-wasm | 4 + 78 files changed, 2991 insertions(+), 29 deletions(-) create mode 100644 gcc/config/wasm/attrs.md create mode 100644 gcc/config/wasm/t-wasm create mode 100644 gcc/config/wasm/wasm-asm.cc create mode 100644 gcc/config/wasm/wasm-cg.cc create mode 100644 gcc/config/wasm/wasm-modes.def create mode 100644 gcc/config/wasm/wasm-passes.cc create mode 100644 gcc/config/wasm/wasm-passes.def create mode 100644 gcc/config/wasm/wasm-protos.h create mode 100644 gcc/config/wasm/wasm.cc create mode 100644 gcc/config/wasm/wasm.h create mode 100644 gcc/config/wasm/wasm.md create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr67037-1.c create mode 100644 libgcc/config/wasm/t-wasm
Comments
Hi! On 2026-05-06T01:30:43+0300, feedable <feedabl3@gmail.com> wrote: > This patch series introduces a GCC backend for WebAssembly. Hey, great that you're working on this! I've had this idea, many years ago (when I had first heard about asm.js/WebAssembly); see, for example, <https://inbox.sourceware.org/87zhh086zn.fsf@euler.schwinge.homeip.net> "Re: More compatibility it's possible?". But of course, I always have too many ideas, and too little time, so... ;-) Your code is not based on Pip Cet's "asmjs" work (see the URL above), I assume? (..., from almost a decade ago, oh wow...) > I would like > some feedback on the overall code, before merging it. I'll try to have a look, but it'll take me a while. You're aware that for getting this accepted into GCC, you'll need approval by the GCC Steering Committee? See <https://gcc.gnu.org/steering.html> "GCC steering committee", <https://gcc.gnu.org/wiki/gcc-steering-committee> "GCC Steering Committee": "Accepting major contributions to GCC, such as [...] new backends [...]". (Happy to try to help with that, too.) Grüße Thomas > Please consult https://gcc.gnu.org/wiki/WebAssemblyBackend for build > instructions and the current feature implementation status in the > backend. > > Please note that the following patch would be a prerequisite for this patchset, > I just didn't feel like submitting a patch with x86 code in it would make sense > here: > https://gcc.gnu.org/pipermail/gcc-patches/2026-May/715690.html > > feedable (3): > df: Add support for pseudos in function arguments > wasm: New backend > wasm: Adjust tests > > gcc/config.gcc | 7 + > gcc/config/wasm/attrs.md | 84 ++ > gcc/config/wasm/t-wasm | 13 + > gcc/config/wasm/wasm-asm.cc | 945 ++++++++++++++++++ > gcc/config/wasm/wasm-cg.cc | 621 ++++++++++++ > gcc/config/wasm/wasm-modes.def | 0 > gcc/config/wasm/wasm-passes.cc | 153 +++ > gcc/config/wasm/wasm-passes.def | 27 + > gcc/config/wasm/wasm-protos.h | 12 + > gcc/config/wasm/wasm.cc | 128 +++ > gcc/config/wasm/wasm.h | 307 ++++++ > gcc/config/wasm/wasm.md | 495 +++++++++ > gcc/df-problems.cc | 6 +- > gcc/df-scan.cc | 4 + > gcc/doc/tm.texi | 5 + > gcc/doc/tm.texi.in | 2 + > gcc/expr.cc | 3 +- > gcc/target.def | 7 + > gcc/testsuite/c-c++-common/analyzer/errno-1.c | 2 + > .../c-c++-common/analyzer/isatty-1.c | 1 + > .../gcc.c-torture/compile/20000804-1.c | 1 + > gcc/testsuite/gcc.c-torture/compile/pr55921.c | 1 + > .../gcc.c-torture/compile/pr60655-1.c | 2 +- > .../gcc.c-torture/execute/20030222-1.c | 2 +- > .../execute/builtins/20010124-1.x | 2 +- > .../ieee/bfloat16-builtin-issignaling-1.c | 1 + > .../execute/ieee/builtin-issignaling-1.c | 1 + > .../ieee/float128-builtin-issignaling-1.c | 1 + > .../ieee/float128x-builtin-issignaling-1.c | 1 + > .../ieee/float16-builtin-issignaling-1.c | 1 + > .../ieee/float32-builtin-issignaling-1.c | 1 + > .../ieee/float32x-builtin-issignaling-1.c | 1 + > .../ieee/float64-builtin-issignaling-1.c | 1 + > .../ieee/float64x-builtin-issignaling-1.c | 1 + > .../gcc.c-torture/execute/pr67037-1.c | 56 ++ > gcc/testsuite/gcc.c-torture/execute/pr67037.c | 4 +- > gcc/testsuite/gcc.dg/20060410.c | 2 +- > .../analyzer/fd-access-mode-target-headers.c | 1 + > .../gcc.dg/analyzer/fd-mktemp-family.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mkostemp-1.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mkostemps-1.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mkstemp-1.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c | 1 + > gcc/testsuite/gcc.dg/analyzer/mktemp-1.c | 1 + > gcc/testsuite/gcc.dg/array-quals-1.c | 1 + > gcc/testsuite/gcc.dg/attr-weakref-1.c | 3 + > gcc/testsuite/gcc.dg/builtin-alloc-size.c | 1 + > gcc/testsuite/gcc.dg/builtin-apply5.c | 1 + > gcc/testsuite/gcc.dg/builtin-prefetch-1.c | 3 +- > gcc/testsuite/gcc.dg/builtins-config.h | 2 + > gcc/testsuite/gcc.dg/builtins-nonnull.c | 1 + > gcc/testsuite/gcc.dg/c23-stdint-1.c | 1 + > gcc/testsuite/gcc.dg/c99-stdint-1.c | 1 + > gcc/testsuite/gcc.dg/c99-stdint-2.c | 1 + > gcc/testsuite/gcc.dg/c99-stdint-7.c | 3 + > gcc/testsuite/gcc.dg/c99-stdint-8.c | 1 + > gcc/testsuite/gcc.dg/charset/function.c | 2 +- > gcc/testsuite/gcc.dg/cpp/escape-3.i | 1 + > gcc/testsuite/gcc.dg/format/pr78304.c | 1 + > gcc/testsuite/gcc.dg/ipa/symver1.c | 2 +- > gcc/testsuite/gcc.dg/lower-subreg-1.c | 2 +- > gcc/testsuite/gcc.dg/pch/valid-1.c | 1 + > gcc/testsuite/gcc.dg/pr115066.c | 2 +- > gcc/testsuite/gcc.dg/pr28755.c | 2 +- > gcc/testsuite/gcc.dg/pr49551.c | 2 +- > gcc/testsuite/gcc.dg/profile-info-section.c | 1 + > gcc/testsuite/gcc.dg/stdint-width-1.c | 1 + > gcc/testsuite/gcc.dg/stdint-width-2.c | 1 + > gcc/testsuite/gcc.dg/tls/thr-cse-1.c | 2 +- > gcc/testsuite/gcc.misc-tests/gcov-23.c | 1 + > gcc/testsuite/gcc.misc-tests/gcov.exp | 4 + > gcc/testsuite/gcc.misc-tests/options.exp | 9 +- > gcc/testsuite/lib/file-format.exp | 8 +- > gcc/testsuite/lib/scanasm.exp | 2 + > gcc/testsuite/lib/target-supports.exp | 39 +- > libgcc/config.host | 5 + > libgcc/config/wasm/t-wasm | 4 + > 78 files changed, 2991 insertions(+), 29 deletions(-) > create mode 100644 gcc/config/wasm/attrs.md > create mode 100644 gcc/config/wasm/t-wasm > create mode 100644 gcc/config/wasm/wasm-asm.cc > create mode 100644 gcc/config/wasm/wasm-cg.cc > create mode 100644 gcc/config/wasm/wasm-modes.def > create mode 100644 gcc/config/wasm/wasm-passes.cc > create mode 100644 gcc/config/wasm/wasm-passes.def > create mode 100644 gcc/config/wasm/wasm-protos.h > create mode 100644 gcc/config/wasm/wasm.cc > create mode 100644 gcc/config/wasm/wasm.h > create mode 100644 gcc/config/wasm/wasm.md > create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr67037-1.c > create mode 100644 libgcc/config/wasm/t-wasm > > -- > 2.54.0
On 07/05/2026 01:26, Thomas Schwinge wrote: > Hi! > > On 2026-05-06T01:30:43+0300, feedable <feedabl3@gmail.com> wrote: >> This patch series introduces a GCC backend for WebAssembly. > Hey, great that you're working on this! > > I've had this idea, many years ago (when I had first heard about > asm.js/WebAssembly); see, for example, > <https://inbox.sourceware.org/87zhh086zn.fsf@euler.schwinge.homeip.net> > "Re: More compatibility it's possible?". But of course, I always have > too many ideas, and too little time, so... ;-) > > Your code is not based on Pip Cet's "asmjs" work (see the URL above), I > assume? (..., from almost a decade ago, oh wow...) Hi, no, I wasn't even aware that there was any GCC-related prior art here. I did find out, however, that there was some effort in gas and bfd to support wasm (via LLVM syntax), but I didn't use that, because I opted for the official assembly format earlier. >> I would like >> some feedback on the overall code, before merging it. > I'll try to have a look, but it'll take me a while. > > > You're aware that for getting this accepted into GCC, you'll need > approval by the GCC Steering Committee? See > <https://gcc.gnu.org/steering.html> "GCC steering committee", > <https://gcc.gnu.org/wiki/gcc-steering-committee> > "GCC Steering Committee": > "Accepting major contributions to GCC, such as [...] new backends [...]". > (Happy to try to help with that, too.) Yes, I'm aware, but I don't really know the process, so I hoped that would just be picked up by them? In any case, I think I would like some help with this. > Grüße > Thomas > > >> Please consult https://gcc.gnu.org/wiki/WebAssemblyBackend for build >> instructions and the current feature implementation status in the >> backend. >> >> Please note that the following patch would be a prerequisite for this patchset, >> I just didn't feel like submitting a patch with x86 code in it would make sense >> here: >> https://gcc.gnu.org/pipermail/gcc-patches/2026-May/715690.html >> >> feedable (3): >> df: Add support for pseudos in function arguments >> wasm: New backend >> wasm: Adjust tests >> >> gcc/config.gcc | 7 + >> gcc/config/wasm/attrs.md | 84 ++ >> gcc/config/wasm/t-wasm | 13 + >> gcc/config/wasm/wasm-asm.cc | 945 ++++++++++++++++++ >> gcc/config/wasm/wasm-cg.cc | 621 ++++++++++++ >> gcc/config/wasm/wasm-modes.def | 0 >> gcc/config/wasm/wasm-passes.cc | 153 +++ >> gcc/config/wasm/wasm-passes.def | 27 + >> gcc/config/wasm/wasm-protos.h | 12 + >> gcc/config/wasm/wasm.cc | 128 +++ >> gcc/config/wasm/wasm.h | 307 ++++++ >> gcc/config/wasm/wasm.md | 495 +++++++++ >> gcc/df-problems.cc | 6 +- >> gcc/df-scan.cc | 4 + >> gcc/doc/tm.texi | 5 + >> gcc/doc/tm.texi.in | 2 + >> gcc/expr.cc | 3 +- >> gcc/target.def | 7 + >> gcc/testsuite/c-c++-common/analyzer/errno-1.c | 2 + >> .../c-c++-common/analyzer/isatty-1.c | 1 + >> .../gcc.c-torture/compile/20000804-1.c | 1 + >> gcc/testsuite/gcc.c-torture/compile/pr55921.c | 1 + >> .../gcc.c-torture/compile/pr60655-1.c | 2 +- >> .../gcc.c-torture/execute/20030222-1.c | 2 +- >> .../execute/builtins/20010124-1.x | 2 +- >> .../ieee/bfloat16-builtin-issignaling-1.c | 1 + >> .../execute/ieee/builtin-issignaling-1.c | 1 + >> .../ieee/float128-builtin-issignaling-1.c | 1 + >> .../ieee/float128x-builtin-issignaling-1.c | 1 + >> .../ieee/float16-builtin-issignaling-1.c | 1 + >> .../ieee/float32-builtin-issignaling-1.c | 1 + >> .../ieee/float32x-builtin-issignaling-1.c | 1 + >> .../ieee/float64-builtin-issignaling-1.c | 1 + >> .../ieee/float64x-builtin-issignaling-1.c | 1 + >> .../gcc.c-torture/execute/pr67037-1.c | 56 ++ >> gcc/testsuite/gcc.c-torture/execute/pr67037.c | 4 +- >> gcc/testsuite/gcc.dg/20060410.c | 2 +- >> .../analyzer/fd-access-mode-target-headers.c | 1 + >> .../gcc.dg/analyzer/fd-mktemp-family.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mkostemp-1.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mkostemps-1.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mkstemp-1.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c | 1 + >> gcc/testsuite/gcc.dg/analyzer/mktemp-1.c | 1 + >> gcc/testsuite/gcc.dg/array-quals-1.c | 1 + >> gcc/testsuite/gcc.dg/attr-weakref-1.c | 3 + >> gcc/testsuite/gcc.dg/builtin-alloc-size.c | 1 + >> gcc/testsuite/gcc.dg/builtin-apply5.c | 1 + >> gcc/testsuite/gcc.dg/builtin-prefetch-1.c | 3 +- >> gcc/testsuite/gcc.dg/builtins-config.h | 2 + >> gcc/testsuite/gcc.dg/builtins-nonnull.c | 1 + >> gcc/testsuite/gcc.dg/c23-stdint-1.c | 1 + >> gcc/testsuite/gcc.dg/c99-stdint-1.c | 1 + >> gcc/testsuite/gcc.dg/c99-stdint-2.c | 1 + >> gcc/testsuite/gcc.dg/c99-stdint-7.c | 3 + >> gcc/testsuite/gcc.dg/c99-stdint-8.c | 1 + >> gcc/testsuite/gcc.dg/charset/function.c | 2 +- >> gcc/testsuite/gcc.dg/cpp/escape-3.i | 1 + >> gcc/testsuite/gcc.dg/format/pr78304.c | 1 + >> gcc/testsuite/gcc.dg/ipa/symver1.c | 2 +- >> gcc/testsuite/gcc.dg/lower-subreg-1.c | 2 +- >> gcc/testsuite/gcc.dg/pch/valid-1.c | 1 + >> gcc/testsuite/gcc.dg/pr115066.c | 2 +- >> gcc/testsuite/gcc.dg/pr28755.c | 2 +- >> gcc/testsuite/gcc.dg/pr49551.c | 2 +- >> gcc/testsuite/gcc.dg/profile-info-section.c | 1 + >> gcc/testsuite/gcc.dg/stdint-width-1.c | 1 + >> gcc/testsuite/gcc.dg/stdint-width-2.c | 1 + >> gcc/testsuite/gcc.dg/tls/thr-cse-1.c | 2 +- >> gcc/testsuite/gcc.misc-tests/gcov-23.c | 1 + >> gcc/testsuite/gcc.misc-tests/gcov.exp | 4 + >> gcc/testsuite/gcc.misc-tests/options.exp | 9 +- >> gcc/testsuite/lib/file-format.exp | 8 +- >> gcc/testsuite/lib/scanasm.exp | 2 + >> gcc/testsuite/lib/target-supports.exp | 39 +- >> libgcc/config.host | 5 + >> libgcc/config/wasm/t-wasm | 4 + >> 78 files changed, 2991 insertions(+), 29 deletions(-) >> create mode 100644 gcc/config/wasm/attrs.md >> create mode 100644 gcc/config/wasm/t-wasm >> create mode 100644 gcc/config/wasm/wasm-asm.cc >> create mode 100644 gcc/config/wasm/wasm-cg.cc >> create mode 100644 gcc/config/wasm/wasm-modes.def >> create mode 100644 gcc/config/wasm/wasm-passes.cc >> create mode 100644 gcc/config/wasm/wasm-passes.def >> create mode 100644 gcc/config/wasm/wasm-protos.h >> create mode 100644 gcc/config/wasm/wasm.cc >> create mode 100644 gcc/config/wasm/wasm.h >> create mode 100644 gcc/config/wasm/wasm.md >> create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr67037-1.c >> create mode 100644 libgcc/config/wasm/t-wasm >> >> -- >> 2.54.0
"Thomas Schwinge" <tschwinge@baylibre.com> writes: > Hi! > > On 2026-05-06T01:30:43+0300, feedable <feedabl3@gmail.com> wrote: >> This patch series introduces a GCC backend for WebAssembly. > > Hey, great that you're working on this! I think so, too! I'm not sure I'll have time to look at it (or that my comments would be very helpful at this point), but if we end up with wasm support in GCC, that would be great. > I've had this idea, many years ago (when I had first heard about > asm.js/WebAssembly); see, for example, > <https://inbox.sourceware.org/87zhh086zn.fsf@euler.schwinge.homeip.net> > "Re: More compatibility it's possible?". But of course, I always have > too many ideas, and too little time, so... ;-) > > Your code is not based on Pip Cet's "asmjs" work (see the URL above), I > assume? (..., from almost a decade ago, oh wow...) It has been a long time, but it did include both asmjs and wasm-as-it-was-back-then support. However, I think WebAssembly has changed a lot and the new port will probably look very different! So my advice is to look at this new work rather than the "wasm" project on GitHub (which has been updated more recently, but it's still been a few years...) Thanks for working on this! Pip