All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
To: linux-sparse@vger.kernel.org
Cc: Christopher Li <sparse@chrisli.org>,
	Dibyendu Majumdar <mobile@majumdar.org.uk>,
	Pekka Enberg <penberg@kernel.org>, Jeff Garzik <jeff@garzik.org>,
	Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: [PATCH v2 04/27] give a type to PSEUDO_ARGs
Date: Sat, 11 Mar 2017 10:06:43 +0100	[thread overview]
Message-ID: <20170311090706.17171-5-luc.vanoostenryck@gmail.com> (raw)
In-Reply-To: <20170311090706.17171-1-luc.vanoostenryck@gmail.com>

Currently, PSEUDO_ARGs are created as if being produce/defined
by the OP_ENTRY instruction.

While there is certainly some logics behind it, it's also not
much useful. Worse, the others pseudo which define the 'def'
member (PSEUDO_REG) often use it to get the type corresponding
to the pseudo with 'pseudo->def->type'. Of course, the OP_ENTRY
can't be used so.

Furthermore, when the type (or the size) of an argument we need
to retrieve this information from the function prototype while
this info could already be given to the pseudo at its creation.

Fix this by using the 'sym' field of PSEUDO_ARG to store the
argument's type (and now the 'def' field become meaningless).

Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
 linearize.c | 6 +++---
 linearize.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/linearize.c b/linearize.c
index ea4616f80..255231c60 100644
--- a/linearize.c
+++ b/linearize.c
@@ -801,14 +801,14 @@ pseudo_t value_pseudo(long long val)
 	return pseudo;
 }
 
-static pseudo_t argument_pseudo(struct entrypoint *ep, int nr)
+static pseudo_t argument_pseudo(struct entrypoint *ep, int nr, struct symbol *arg)
 {
 	pseudo_t pseudo = __alloc_pseudo(0);
 	struct instruction *entry = ep->entry;
 
 	pseudo->type = PSEUDO_ARG;
 	pseudo->nr = nr;
-	pseudo->def = entry;
+	pseudo->sym = arg;
 	add_pseudo(&entry->arg_list, pseudo);
 
 	/* Argument pseudos have neither usage nor def */
@@ -1540,7 +1540,7 @@ static void linearize_argument(struct entrypoint *ep, struct symbol *arg, int nr
 	ad.source_type = arg;
 	ad.result_type = arg;
 	ad.address = symbol_pseudo(ep, arg);
-	linearize_store_gen(ep, argument_pseudo(ep, nr), &ad);
+	linearize_store_gen(ep, argument_pseudo(ep, nr, arg), &ad);
 	finish_address_gen(ep, &ad);
 }
 
diff --git a/linearize.h b/linearize.h
index c03940eea..9d192f7aa 100644
--- a/linearize.h
+++ b/linearize.h
@@ -34,9 +34,9 @@ struct pseudo {
 	struct pseudo_user_list *users;
 	struct ident *ident;
 	union {
-		struct symbol *sym;
-		struct instruction *def;
-		long long value;
+		struct symbol *sym;	// PSEUDO_SYM & ARG
+		struct instruction *def;// PSEUDO_REG & PHI
+		long long value;	// PSEUDO_VAL
 	};
 	void *priv;
 };
-- 
2.11.1


  parent reply	other threads:[~2017-03-11  9:07 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-11  9:06 [PATCH v2 00/27] LLVM fixes Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 01/27] give a type to OP_PHISOURCE Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 02/27] give a type to OP_SEL, always Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 03/27] give a type to OP_SYMADDR Luc Van Oostenryck
2017-03-11  9:06 ` Luc Van Oostenryck [this message]
2017-03-11  9:06 ` [PATCH v2 05/27] llvm: fix translation of PSEUDO_VALs into a ValueRefs Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 06/27] llvm: fix output_op_store() which modify its operand Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 07/27] llvm: fix output_op_[ptr]cast() Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 08/27] llvm: give a name to call return values Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 09/27] llvm: add test cases for the type of constants Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 10/27] add ptr_list_nth_entry() Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 11/27] llvm: fix type of literal integer passed as arguments Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 12/27] llvm: fix output OP_ADD mixed with pointers Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 13/27] llvm: add support for OP_SYMADDR Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 14/27] keep OP_SYMADDR instructions Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 15/27] llvm: add test cases for symbol's address Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 16/27] llvm: add test cases for pointers passed as argument Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 17/27] llvm: add test cases for arrays " Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 18/27] llvm: add test cases for degenerated pointers Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 19/27] llvm: add support for OP_NEG Luc Van Oostenryck
2017-03-11  9:06 ` [PATCH v2 20/27] llvm: fix pointer/float mixup in comparisons Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 21/27] llvm: use pseudo_list_size() instead of open coding it Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 22/27] llvm: give arguments a name Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 23/27] llvm: remove unneeded arg 'module' Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 24/27] llvm: remove unneeded arg 'fn' Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 25/27] llvm: remove unneeded 'generation' Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 26/27] llvm: remove unneeded function::type Luc Van Oostenryck
2017-03-11  9:07 ` [PATCH v2 27/27] llvm: reduce scope of 'bb_nr' Luc Van Oostenryck
2017-03-11 11:12 ` [PATCH v2 00/27] LLVM fixes Dibyendu Majumdar
2017-03-11 11:49   ` Luc Van Oostenryck
2017-03-11 11:54     ` Dibyendu Majumdar
2017-03-11 12:30       ` Luc Van Oostenryck
2017-03-11 13:36         ` Dibyendu Majumdar
2017-03-11 14:12           ` Luc Van Oostenryck
2017-03-11 14:16             ` Dibyendu Majumdar
2017-03-11 14:28               ` Luc Van Oostenryck
2017-03-11 15:10               ` Jeff Garzik
2017-03-11 15:51                 ` Luc Van Oostenryck
2017-03-11 18:08                   ` Dibyendu Majumdar
2017-03-11 20:44                     ` Luc Van Oostenryck
2017-03-11 21:21                       ` Dibyendu Majumdar
2017-03-11 22:30                         ` Luc Van Oostenryck
2017-03-11 22:57                           ` Dibyendu Majumdar
2017-03-11 23:02                             ` Linus Torvalds
2017-03-11 23:04                               ` Dibyendu Majumdar
2017-03-11 23:12                                 ` Luc Van Oostenryck
2017-03-12  2:35     ` Dibyendu Majumdar
2017-03-14  6:18 ` Christopher Li
2017-03-16 16:41   ` Luc Van Oostenryck
2017-03-17 14:06     ` Dibyendu Majumdar
2017-03-17 17:04     ` Christopher Li
2017-03-17 17:41       ` Luc Van Oostenryck
2017-03-17 18:05         ` Christopher Li

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=20170311090706.17171-5-luc.vanoostenryck@gmail.com \
    --to=luc.vanoostenryck@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-sparse@vger.kernel.org \
    --cc=mobile@majumdar.org.uk \
    --cc=penberg@kernel.org \
    --cc=sparse@chrisli.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.