diff mbox

Add missing checks for Waddress-space

Message ID 20090425093616.3edbb9b5@notas (mailing list archive)
State Mainlined, archived
Headers show

Commit Message

Martin Nagy April 25, 2009, 7:36 a.m. UTC
Christopher Li wrote:
> On Thu, Apr 23, 2009 at 1:25 PM, Martin Nagy <nagy.martin@gmail.com> wrote:
> >
> > Some of these are missing in evaluate.c. Maybe we should change the
> > option to not consider address space at all, if unset. It would be much
> > easier to make attribute_address_space() ignore it.
> 
> I think disable it at attribute_address_space() might be better.
> Otherwise is_same_type() will still return false for address space difference.
> There are too many places to track down the address space comparison.

OK, new patch attached.

Martin

Comments

Christopher Li April 27, 2009, 6:08 a.m. UTC | #1
On Sat, Apr 25, 2009 at 12:36 AM, Martin Nagy <nagy.martin@gmail.com> wrote:
> OK, new patch attached.

Applied and thanks.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

From f05ae87e33092ff9fab9f518887c9dfcb9e32a70 Mon Sep 17 00:00:00 2001
From: Martin Nagy <nagy.martin@gmail.com>
Date: Sat, 25 Apr 2009 06:44:49 +0200
Subject: [PATCH] Ignore address space if !Waddress_space

Remove all previous checks for Waddress_space and add one centralized to
the address_space attribute handler. If user passes the
-Wno-address-space option, we behave as if every pointer had no address
space.

Signed-off-by: Martin Nagy <nagy.martin@gmail.com>
---
 evaluate.c |    8 ++++----
 parse.c    |    2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/evaluate.c b/evaluate.c
index 5c3812e..b63fa36 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -689,7 +689,7 @@  const char *type_difference(struct ctype *c1, struct ctype *c2,
 			/* XXX: we ought to compare sizes */
 			break;
 		case SYM_PTR:
-			if (Waddress_space && as1 != as2)
+			if (as1 != as2)
 				return "different address spaces";
 			/* MOD_SPECIFIER is due to idiocy in parse.c */
 			if ((mod1 ^ mod2) & ~MOD_IGNORE & ~MOD_SPECIFIER)
@@ -706,7 +706,7 @@  const char *type_difference(struct ctype *c1, struct ctype *c2,
 			struct symbol *arg1, *arg2;
 			int i;
 
-			if (Waddress_space && as1 != as2)
+			if (as1 != as2)
 				return "different address spaces";
 			if ((mod1 ^ mod2) & ~MOD_IGNORE & ~MOD_SIGNEDNESS)
 				return "different modifiers";
@@ -745,7 +745,7 @@  const char *type_difference(struct ctype *c1, struct ctype *c2,
 			break;
 		}
 		case SYM_BASETYPE:
-			if (Waddress_space && as1 != as2)
+			if (as1 != as2)
 				return "different address spaces";
 			if (base1 != base2)
 				return "different base types";
@@ -762,7 +762,7 @@  const char *type_difference(struct ctype *c1, struct ctype *c2,
 		t1 = base1;
 		t2 = base2;
 	}
-	if (Waddress_space && as1 != as2)
+	if (as1 != as2)
 		return "different address spaces";
 	if ((mod1 ^ mod2) & ~MOD_IGNORE & ~MOD_SIGNEDNESS)
 		return "different modifiers";
diff --git a/parse.c b/parse.c
index 14ae25d..9662122 100644
--- a/parse.c
+++ b/parse.c
@@ -987,7 +987,7 @@  static struct token *attribute_address_space(struct token *token, struct symbol
 	token = conditional_expression(token, &expr);
 	if (expr) {
 		as = const_expression_value(expr);
-		if (as)
+		if (Waddress_space && as)
 			ctx->ctype.as = as;
 	}
 	token = expect(token, ')', "after address_space attribute");
-- 
1.6.0.6