From patchwork Thu Aug 10 20:28:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christopher Li X-Patchwork-Id: 9894569 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 634F460348 for ; Thu, 10 Aug 2017 20:28:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 54DE428B8D for ; Thu, 10 Aug 2017 20:28:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4941E28B93; Thu, 10 Aug 2017 20:28:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ADC4328B8D for ; Thu, 10 Aug 2017 20:28:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753303AbdHJU2s (ORCPT ); Thu, 10 Aug 2017 16:28:48 -0400 Received: from mail-yw0-f193.google.com ([209.85.161.193]:34583 "EHLO mail-yw0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753183AbdHJU2r (ORCPT ); Thu, 10 Aug 2017 16:28:47 -0400 Received: by mail-yw0-f193.google.com with SMTP id t139so1131519ywg.1 for ; Thu, 10 Aug 2017 13:28:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to:cc; bh=JIV4/AYoNj4roNXaAZ8Zw+fG5Lxqd4mFyUfymF+jzp0=; b=pXh+fN2NIw9PN91b5v/OuYWML7Wj/yXBYlscqxD/OsWWkw6cpjTZeSQRSyiZ0Vex6N pIIvmrC0+YNGHDapypiRLuizHjZYXE4ygwIJdcpmxzumhbQA+1oIpYv8QFc+fg8nvLHe xsf+sRpi5JB8JBVbN5/IhlXxWSYjIwFVQnQHUAEZw+1vC8x/1Lvu90bTLIwG8yUnc2oq m4tMCCimWrolvkprOrFVV9ceD6RcpGEUiYMdifiL9ORzT9Q0H87SKDsHhU1ZjSPW2ocS wdZOQv7CImCttSeJYNy8pI6DNdrYzkGeTbHVvdR16jQZ+767YGbebQXtZ9CmJEAOiVgp BQ1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to:cc; bh=JIV4/AYoNj4roNXaAZ8Zw+fG5Lxqd4mFyUfymF+jzp0=; b=lU44NqGPtgxqT+5imlhwwMUgeXFbxwrL2T+NE3ICTxERDJ1AyH/Ma9m6Ncn6P4KXQv VZ6EZkcu7Upi9/TQ1u6Xw3vzGPDd26sYe7WppqX1iJgUpVFEZc7aDFyStvPLl09l9jOE G0bLwqIBxqSk83oelsYhRDhZ0NcgGTuUQgwVojFr9S+9XxmEuKomMnmCftsvY9i7p3hn b5JoZa49p7TNipsBCq/LRjonXG9AoR/txLtBG3lmUV8A/LJvMRr3FaZ9bBTVmC11an52 5Wh88Lxs3QQRGS5Rbit7l+/uHqWp4eF3TfmscY5n4+Nk5vbo7lJNLogUJZspEs6sXnhZ 7QiA== X-Gm-Message-State: AHYfb5jM0/kHj4KZasOdu2/pNSdvqyRXCVVLZjmPRHYgwoNOYjX/w86F Y3aTq8SoTNgr98rMjk9Gg8VRrsKYyq0h X-Received: by 10.37.52.13 with SMTP id b13mr10203140yba.208.1502396926805; Thu, 10 Aug 2017 13:28:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.68.39 with HTTP; Thu, 10 Aug 2017 13:28:46 -0700 (PDT) From: Christopher Li Date: Thu, 10 Aug 2017 16:28:46 -0400 X-Google-Sender-Auth: M83peq5l6SuND-azg0IZuJ0MOZI Message-ID: Subject: [PATCH V2 2/2] Documents: project ideas To: Linux-Sparse Cc: Luc Van Oostenryck , Dibyendu Majumdar , Randy Dunlap Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Adding project ideas to improve sparse. Signed-off-by: Christopher Li --- Documentation/project-ideas.md | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Documentation/project-ideas.md +* emit x86/arm machine level code + diff --git a/Documentation/project-ideas.md b/Documentation/project-ideas.md new file mode 100644 index 0000000..380f850 --- /dev/null +++ b/Documentation/project-ideas.md @@ -0,0 +1,52 @@ +Why hacking on sparse +===================== + +1. sparse is small. + The full project compiles in less than 10 seconds on old and not performing laptop. +2. sparse is fast. + Typically, sparse can check a C file 1/10 of time it takes for gcc to generate object files. +3. sparse can digest the full kernel source files. + With sparse-llvm, sparse uses llvm as back end to emit real machine code. + +New developer hacking on sparse +============================== + + +* All sparse warning messages should include the option how + to disable it. + e.g. "pre-process.c:20*:28: warning: Variable length array is used." + should be something like + "pre-process.c:20*:28: warning: Variable length array is +used. (-Wno-vla)" +* extend test-inspect to inspect more AST fields. +* extend test-inspect to inspect instructions. +* adding architecture handling in sparse similar to cgcc +* parallel processing of test-suite +* Howto: fix the kernel rcu related checker warnings +* option to disable AST level inline. +* debug: debug version of sparse do all the verification double check +* test suite: verify and compare IR (suggested by Dibyendu Majumdar) +* checker error output database + +For experienced developers +========================== + +* merge C type on incremental declare of C type and function prototype. +* move attribute out of ctype to allow easier to add new attribute. +* serialize, general object walking driven by data structures. +* serialize, write sparse byte code into file +* serialize, load sparse byte code from file. +* symbol index/linker, know which symbol in which byte code file. +* inline function in instruction level +* cross function checking +* debug: optimization step by step log +* debug: fancy animation of CFG +* phi node location (Luc has patch) +* revisit crazy programmer warning, invalid SSA form. +* ptrlist, looping while modify inside the loop. +* dead code elimination using ssa +* constant propagation using ssa. +* x86/arm back end instruction set define +* register allocation.