From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 52EA93858D20 for ; Mon, 1 Apr 2024 16:21:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 52EA93858D20 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 52EA93858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::333 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711988516; cv=none; b=t2DL8iOLe6cEUbEfRMFWxzHOCRkaRBNWJ+zms76Doi1Wv47Zqa7pNc1E9CPoUMqBwmuV5GKAj2HfB7yo1RdP8LF5gVbT5mh40iongu/e1pKYkVj5Iljwz50Ya/hbxWItI34CaVnS/HSj6l+hGkfxaVTb2ExhkCtlULq1qN8UV10= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711988516; c=relaxed/simple; bh=fTBcGJNbUOg4/tgT1teaIlgrTakVmfESG8POAh3IerE=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=Om7/+jSOZ7195BTYO/0kY14u/q7W32gGDtU0tRabqmtTqTfvjYT2wV0Epe4B0kV6EiTx+2Ttl8bf9pxSE8nWk0iLVnhmg0dH5amCCANIZBwHnNz3x1pEwz9iNqIL94mHIafdiqzM3TgcsN4sw8o95B7EybEbcBEjLsfnPxfqUwQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-4156e0cffdaso2406535e9.1 for ; Mon, 01 Apr 2024 09:21:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711988513; x=1712593313; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=vk6/UKoc0hoLn7apNOtic7wh0aorpQWEsPVEnvipR14=; b=HW7YEE98T2PKvS3uGasw4izhWkY9swbVAWXWsvZ+3w/N6FWPp/OYrjKAcvSwrQgPy/ sXVf0QMEv868As43EnXmraDiwmxdkWPnGwVErlA1o88qXVA7GW+77obJP9aIt5PG3RbK iq/AzVLT9sZVg7ldN6W7j2LucnLApobXSG13N4IYv8guZkD4ylekxlEfftqCeTcyGhe9 y9EKPwXEVhUejTfyqPXMRHgI2fS7PNoowoV61nKnV0XXTOthmmx0mK8918YOqI2MyI6z S/ZqQkwFrethxR8MOs4XnAuYOm4Slz7iaVJ05uBgvKi3nthD+XzRwcinL9HjqG1ZH2ZX jy+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711988513; x=1712593313; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vk6/UKoc0hoLn7apNOtic7wh0aorpQWEsPVEnvipR14=; b=BxSoIgRNFfsvokhTpdPICnDG9ohTaOJ4cRUC+AFDDqOKxa3KwpVU2zhYFds4q4wFRp FvwA9E/GlkJipxxcCevaO71Hxfa8hJv1rH6rKubG4h0tK5qn/B1CYD4wlqjbjDYLm/5J d8O/RytHBND41jM3oZeTdWHQ1v3CtVB+OsZg4D+2PLKDTGHuyebIqYs+L9m6tOouLL2l PdO7nRsg3HvHJAXlcJpwAGPIe5Z3Qj+mwxCi/7S36JuZQ5Bq+8BBgyT8zxFp03BWHp9r dGbZfZEJHHWXAFdwjj1xD0MC0NQHdgdrACXP+bYZ9CKrh2Abk4b2sXPGBiCdVtpyPXjC OdnQ== X-Gm-Message-State: AOJu0Yx4T6tQOYx1mVhRJacrRRDU4C8GtM86Owl+QpinH1Uf6z5uHj41 JeDP73YUAc7vhrCLStJbRyyg34B56wbhIGlpXBXbmlwDe6TmYQede/h9FxwybC8QhgHbJMsGNvi Ai4ij9jnMf3tNIEIG5KJEc2cYvRgn5jljqpE2khIc X-Google-Smtp-Source: AGHT+IH9QRIXmayg3+4RST3YA3++JGG1s7MAy9dG5ewnlaSpc7bQOqtc6Dkp+YXsGgGINGve4y2vl6Q4/u2AjWkegV4= X-Received: by 2002:a5d:4a41:0:b0:341:cf18:70b3 with SMTP id v1-20020a5d4a41000000b00341cf1870b3mr8530130wrs.27.1711988512447; Mon, 01 Apr 2024 09:21:52 -0700 (PDT) MIME-Version: 1.0 From: Thor Preimesberger Date: Tue, 2 Apr 2024 01:21:41 +0900 Message-ID: Subject: [GSoC] Application RFC + Question - GENERIC dump To: gcc@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 server2.sourceware.org List-Id: Hey all, I'm joining the group of people submitting their GSoC applications over the holiday. I'm interested in the "Implement structured dumping of GENERIC" project idea, and the application I've written is below. A quick question before though: - What would the expected use cases of the proposed -fdump-generic-nodes option be, in addition to, presumably, writing front ends into gcc? I'm also curious about also targeting .gz/Graphviz; on a first blush, it doesn't seem like too much additional work, and it may be useful for the above applications. But I imagine there may be other ways to process the data that would ultimately be more useful. Best, Thor Preimesberger -------------------------------- Background: I'm an undergraduate student in pure mathematics who tinkers with technology in his free time. I've taken an interest in compilers as of last summer. I've written a couple of parsers, by hand, and a couple of toy passes in LLVM. I'm currently working through the code generation parts of the Dragon Book, in between my current course work. I'm familiar with C and C++, and I'm currently taking courses (on quantum information science, digital design, and computer architecture) that focus on topics adjacent or tertiary to compiler engineering. In the mathematical part of my life, I mostly concentrate on geometric analysis, and I've taken a few post graduate courses, on Ricci flow and on variational/geometric partial differential equations. These topics don't really capture all the mathematics I'm interested in, and I don't think any of this academic work is directly relevant to this project. But I hope that it conveys that I enjoy deep, technical work that interpolates between multiple levels of abstraction. I believe compiler engineering shares this same aesthetic appeal. This - and the pragmatic, altruistic nature of compiler engineering - draws me to the field and to GCC in particular. Expected Outcome: - A patch in the main GCC repository that adds an additional dump option (-fdump-generic-nodes) for the GENERIC intermediate representation that preserves it's tree structure before it is lowered to GIMPLE. We want to initially target JSON, and then provide a human-readable translation into HTML. Additional features/visualizations are possible, but I would need to discuss them with the mentor, Richard Biener. Timeline: Pre-GSoC I've already built gcc, with and without offloading, and have successfully passed the tests under make-gcc. (Well, most of the tests for the version of GCC with offloading - I understand that that is to be expected.) I'm currently compiling some nontrivial programs to various stages of completion, and toying with them in GDB and with debug options. After this, I want to better understand the architecture of GCC and it's intermediate representations. I would achieve this by reading the documentation and dumping lots of code. Contemporaneously, I would want to at least understand, if not possibly fix, a few items/bugs in the GCC Bugzilla. Here are two I want to look at, picked wholly by individual interest: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38833 - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97444 (I'm happy to take a look at any issues anyone recommends - especially if they are more germane to the project than the above!) GSoC (Starting the week of May 27th, to August 26th) Community Bonding Understand the previously submitted patch in ( https://gcc.gnu.org/pipermail/gcc-patches/2024-February/646295.html ) Understand all the intended uses of the project Scope out possible augmentations and begin researching them to the project after discussing with mentor. Continue patching effort, if it's not finished. Weeks 1-4 Begin working on minimal viable product (GENERIC to JSON, and JSON to HTML) Finish scoping possible augmentations by week 4, Begin development on any augmentations once approval is obtained Weeks 4 - 8 Continue working on minimal viable product Weeks 8 - 13 Complete minimal viable product if it is not finished. Otherwise, begin working on possible augmentations as agreed upon with mentor Wrap up documentation for any unfinished pieces