Hi!

On 2026-05-06T01:30:43+0300, feedable <[email protected]> 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/[email protected]>
"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

Reply via email to