From: Christopher Li <sparse@chrisli.org>
To: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Cc: Dibyendu Majumdar <mobile@majumdar.org.uk>,
Linux-Sparse <linux-sparse@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 09/29] add helper to test if a variable is "simple"
Date: Fri, 18 Aug 2017 16:14:20 -0400 [thread overview]
Message-ID: <CANeU7Q=wgPStjUYkYCbiy5DEiLPZ-kML+2XiAwumn__FMYePTg@mail.gmail.com> (raw)
In-Reply-To: <CAMHZB6H12RnZe3Swai56AZYfZBc8_wOabtb+2iWtuz=Kmdy_Uw@mail.gmail.com>
On Fri, Aug 18, 2017 at 3:21 PM, Luc Van Oostenryck
<luc.vanoostenryck@gmail.com> wrote:
>
> It's very easy, you just need for is_promotable() to always return
> false. But really, what would be the point?
I was mostly thinking debugging and verification purpose.
AST to linearized byte code without the SSA conversion of
memory variable is very straight forward.
Also, I just realized that, promoting memory access into SSA
pseudo is actually not avoidable at instruction level. After CSE
and flow optimization, there might open up new chance to
promote local variable into SSA form. We might need some code
to promote memory access to SSA pseudo from instruction level
any way.
> The points that matter to me are:
> 1) generate correct SSA information.
> This is ultra-important because with incorrect SSA
> a lot of the optimizations are wrong, introduce errors
> and infinite loops or need ugly workarounds.
That I totally agree. Incorrect SSA can't not use as SSA at all.
> 2) correct any other issues sparse could have with the generated IR
> 3) correct any errors sparse could have with an optimization
> 4) add support for construct sparse doesn't support yet
> 5) add more features, make the sparse's code more efficient
> and the generated IR too.
All agree.
> 5') do not forget that sparse is firstly the/a C checker for the kernel
> (and others projects).
Sure. But sparse need to get good IR to perform the checking.
Chris
next prev parent reply other threads:[~2017-08-18 20:14 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-16 15:34 [PATCH 00/29] Simple & Efficient SSA construction Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 01/29] remove wrong part of simplify_loads() Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 02/29] give a type to OP_PHISOURCEs Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 03/29] fix test case kill-phi-ttsb Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 04/29] add test case for incomplete type Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 05/29] add test case for bad return type Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 06/29] topasm: top-level asm is special Luc Van Oostenryck
2017-08-17 6:49 ` Christopher Li
2017-08-17 19:22 ` Luc Van Oostenryck
2017-08-18 15:13 ` Christopher Li
2017-08-16 15:34 ` [PATCH 07/29] ret-void: return nothing only for void functions Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 08/29] small code reorg of add_store() Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 09/29] add helper to test if a variable is "simple" Luc Van Oostenryck
2017-08-17 7:19 ` Christopher Li
2017-08-17 16:59 ` Dibyendu Majumdar
2017-08-17 19:17 ` Luc Van Oostenryck
2017-08-17 19:21 ` Dibyendu Majumdar
2017-08-17 19:25 ` Luc Van Oostenryck
2017-08-17 19:28 ` Dibyendu Majumdar
2017-08-18 16:18 ` Christopher Li
2017-08-18 16:38 ` Luc Van Oostenryck
2017-08-18 18:15 ` Dibyendu Majumdar
2017-08-18 18:35 ` Christopher Li
2017-08-18 19:21 ` Luc Van Oostenryck
2017-08-18 20:14 ` Christopher Li [this message]
2017-08-18 20:27 ` Luc Van Oostenryck
2017-08-17 19:51 ` Luc Van Oostenryck
2017-08-17 19:14 ` Luc Van Oostenryck
2017-08-18 16:13 ` Christopher Li
2017-08-18 16:26 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 10/29] add helper imple_access() to test if an access " Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 11/29] add PSEUDO_UNDEF Luc Van Oostenryck
2017-08-17 7:30 ` Christopher Li
2017-08-17 16:55 ` Dibyendu Majumdar
2017-08-17 19:01 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 12/29] add undef_pseudo() Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 13/29] add insert_phi_node() Luc Van Oostenryck
2017-08-18 20:39 ` Christopher Li
2017-08-18 20:52 ` Luc Van Oostenryck
2017-08-18 21:17 ` Christopher Li
2017-08-18 21:43 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 14/29] extract alloc_phisrc() from alloc_phi() Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 15/29] add remove_use() Luc Van Oostenryck
2017-08-18 20:51 ` Christopher Li
2017-08-16 15:34 ` [PATCH 16/29] ptrmap: add missing #include "compat.h" Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 17/29] ptrmap: core implementation Luc Van Oostenryck
2017-08-18 21:02 ` Christopher Li
2017-08-18 21:35 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 18/29] ptrmap: add type-safe interface Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 19/29] sssa: add Simple SSA interfaces Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 20/29] sssa: add needed new members Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 21/29] sssa: add basic implementation Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 22/29] sssa: add seal_gotos() needed to seal BBs targeted by gotos Luc Van Oostenryck
2017-08-18 21:26 ` Christopher Li
2017-08-18 21:46 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 23/29] sssa: set var's ident Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 24/29] sssa: add PSEUDO_INDIR Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 25/29] sssa: reorg load_var() Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 26/29] sssa: protect against unreachable loops Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 27/29] sssa: remove trivial phi-nodes Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 28/29] sssa: switch to the new SSA construction Luc Van Oostenryck
2017-08-18 21:47 ` Christopher Li
2017-08-18 21:58 ` Luc Van Oostenryck
2017-08-16 15:34 ` [PATCH 29/29] sssa: remove now unneeded simplify_one_symbol() Luc Van Oostenryck
2017-08-16 15:51 ` [PATCH 00/29] Simple & Efficient SSA construction Linus Torvalds
2017-08-16 16:12 ` Luc Van Oostenryck
2017-08-17 4:45 ` Christopher Li
2017-08-17 4:42 ` Christopher Li
2017-08-17 5:16 ` Luc Van Oostenryck
2017-08-17 5:58 ` Christopher Li
2017-08-17 19:29 ` Luc Van Oostenryck
2017-08-17 20:04 ` Luc Van Oostenryck
2017-08-19 2:08 ` Christopher Li
2017-08-17 6:09 ` Luc Van Oostenryck
2017-08-17 6:16 ` Christopher Li
2017-08-17 19:58 ` Luc Van Oostenryck
2017-08-17 10:10 ` Dibyendu Majumdar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CANeU7Q=wgPStjUYkYCbiy5DEiLPZ-kML+2XiAwumn__FMYePTg@mail.gmail.com' \
--to=sparse@chrisli.org \
--cc=linux-sparse@vger.kernel.org \
--cc=luc.vanoostenryck@gmail.com \
--cc=mobile@majumdar.org.uk \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).