summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-12-16 07:42:28 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-12-17 23:29:15 +0100
commit0fe7ebb9cdb4b215ffaabac37610f94b1856b6ec (patch)
treed8c55f51db0fd3da739d9b6faf87a3fd91c01a13
parent87e9f4270a611738322712f572f12a9e395bfc73 (diff)
downloadsparse-0fe7ebb9cdb4b215ffaabac37610f94b1856b6ec.tar.gz
show-parse: do not display base type's redundant specifiers
In do_show_type(), builtin_typename() is used to display builtin (base) types and modifier_string() is used to display modifiers. However, most base types contains some intrinsic modifiers, the type specifiers. So, a type like 'unsigned long' is displayed as 'unsigned long [unsigned] [long]'. Fix this redundancy by not displaying the specifiers when displaying a base_type (or an enum). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--show-parse.c2
-rw-r--r--validation/bad-type-twice1.c2
-rw-r--r--validation/builtin-overflow.c60
-rw-r--r--validation/cast-bad-00.c4
-rw-r--r--validation/choose_expr.c4
-rw-r--r--validation/expand/builtin-expect.c4
6 files changed, 39 insertions, 37 deletions
diff --git a/show-parse.c b/show-parse.c
index e8a0b4dc..36b44742 100644
--- a/show-parse.c
+++ b/show-parse.c
@@ -298,6 +298,8 @@ deeper:
if (as)
prepend(name, "%s ", show_as(as));
+ if (sym->type == SYM_BASETYPE || sym->type == SYM_ENUM)
+ mod &= ~MOD_SPECIFIER;
s = modifier_string(mod);
len = strlen(s);
name->start -= len;
diff --git a/validation/bad-type-twice1.c b/validation/bad-type-twice1.c
index 95cfd9e0..cc81662a 100644
--- a/validation/bad-type-twice1.c
+++ b/validation/bad-type-twice1.c
@@ -10,7 +10,7 @@ static unsigned long foo(unsigned long val, void *ref)
*
* check-error-start
bad-type-twice1.c:3:17: error: incompatible types for operation (>=)
-bad-type-twice1.c:3:17: left side has type unsigned long [unsigned] val
+bad-type-twice1.c:3:17: left side has type unsigned long val
bad-type-twice1.c:3:17: right side has type void *ref
* check-error-end
*/
diff --git a/validation/builtin-overflow.c b/validation/builtin-overflow.c
index 798868a3..c3d1d3aa 100644
--- a/validation/builtin-overflow.c
+++ b/validation/builtin-overflow.c
@@ -139,15 +139,15 @@ builtin-overflow.c:59:37: error: not enough arguments for __builtin_add_overflow
builtin-overflow.c:60:37: error: not enough arguments for __builtin_add_overflow
builtin-overflow.c:61:37: error: too many arguments for __builtin_add_overflow
builtin-overflow.c:62:38: error: invalid type for argument 1:
-builtin-overflow.c:62:38: int enum e [signed] e
+builtin-overflow.c:62:38: int enum e e
builtin-overflow.c:63:41: error: invalid type for argument 2:
-builtin-overflow.c:63:41: int enum e [signed] e
+builtin-overflow.c:63:41: int enum e e
builtin-overflow.c:64:45: error: invalid type for argument 3:
builtin-overflow.c:64:45: int enum e *
builtin-overflow.c:65:38: error: invalid type for argument 1:
-builtin-overflow.c:65:38: bool [unsigned] [usertype] b
+builtin-overflow.c:65:38: bool [usertype] b
builtin-overflow.c:66:41: error: invalid type for argument 2:
-builtin-overflow.c:66:41: bool [unsigned] [usertype] b
+builtin-overflow.c:66:41: bool [usertype] b
builtin-overflow.c:67:45: error: invalid type for argument 3:
builtin-overflow.c:67:45: bool *
builtin-overflow.c:68:44: error: invalid type for argument 3:
@@ -157,17 +157,17 @@ builtin-overflow.c:71:39: error: not enough arguments for __builtin_add_overflow
builtin-overflow.c:72:39: error: not enough arguments for __builtin_add_overflow_p
builtin-overflow.c:73:39: error: too many arguments for __builtin_add_overflow_p
builtin-overflow.c:74:40: error: invalid type for argument 1:
-builtin-overflow.c:74:40: int enum e [signed] [addressable] e
+builtin-overflow.c:74:40: int enum e [addressable] e
builtin-overflow.c:75:43: error: invalid type for argument 2:
-builtin-overflow.c:75:43: int enum e [signed] [addressable] e
+builtin-overflow.c:75:43: int enum e [addressable] e
builtin-overflow.c:76:46: error: invalid type for argument 3:
-builtin-overflow.c:76:46: int enum e [signed] [addressable] e
+builtin-overflow.c:76:46: int enum e [addressable] e
builtin-overflow.c:77:40: error: invalid type for argument 1:
-builtin-overflow.c:77:40: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:77:40: bool [addressable] [usertype] b
builtin-overflow.c:78:43: error: invalid type for argument 2:
-builtin-overflow.c:78:43: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:78:43: bool [addressable] [usertype] b
builtin-overflow.c:79:46: error: invalid type for argument 3:
-builtin-overflow.c:79:46: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:79:46: bool [addressable] [usertype] b
builtin-overflow.c:80:46: error: invalid type for argument 3:
builtin-overflow.c:80:46: void *p
builtin-overflow.c:82:37: error: not enough arguments for __builtin_sub_overflow
@@ -175,15 +175,15 @@ builtin-overflow.c:83:37: error: not enough arguments for __builtin_sub_overflow
builtin-overflow.c:84:37: error: not enough arguments for __builtin_sub_overflow
builtin-overflow.c:85:37: error: too many arguments for __builtin_sub_overflow
builtin-overflow.c:86:38: error: invalid type for argument 1:
-builtin-overflow.c:86:38: int enum e [signed] [addressable] e
+builtin-overflow.c:86:38: int enum e [addressable] e
builtin-overflow.c:87:41: error: invalid type for argument 2:
-builtin-overflow.c:87:41: int enum e [signed] [addressable] e
+builtin-overflow.c:87:41: int enum e [addressable] e
builtin-overflow.c:88:45: error: invalid type for argument 3:
builtin-overflow.c:88:45: int enum e *
builtin-overflow.c:89:38: error: invalid type for argument 1:
-builtin-overflow.c:89:38: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:89:38: bool [addressable] [usertype] b
builtin-overflow.c:90:41: error: invalid type for argument 2:
-builtin-overflow.c:90:41: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:90:41: bool [addressable] [usertype] b
builtin-overflow.c:91:45: error: invalid type for argument 3:
builtin-overflow.c:91:45: bool *
builtin-overflow.c:92:44: error: invalid type for argument 3:
@@ -193,17 +193,17 @@ builtin-overflow.c:95:39: error: not enough arguments for __builtin_sub_overflow
builtin-overflow.c:96:39: error: not enough arguments for __builtin_sub_overflow_p
builtin-overflow.c:97:39: error: too many arguments for __builtin_sub_overflow_p
builtin-overflow.c:98:40: error: invalid type for argument 1:
-builtin-overflow.c:98:40: int enum e [signed] [addressable] e
+builtin-overflow.c:98:40: int enum e [addressable] e
builtin-overflow.c:99:43: error: invalid type for argument 2:
-builtin-overflow.c:99:43: int enum e [signed] [addressable] e
+builtin-overflow.c:99:43: int enum e [addressable] e
builtin-overflow.c:100:46: error: invalid type for argument 3:
-builtin-overflow.c:100:46: int enum e [signed] [addressable] e
+builtin-overflow.c:100:46: int enum e [addressable] e
builtin-overflow.c:101:40: error: invalid type for argument 1:
-builtin-overflow.c:101:40: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:101:40: bool [addressable] [usertype] b
builtin-overflow.c:102:43: error: invalid type for argument 2:
-builtin-overflow.c:102:43: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:102:43: bool [addressable] [usertype] b
builtin-overflow.c:103:46: error: invalid type for argument 3:
-builtin-overflow.c:103:46: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:103:46: bool [addressable] [usertype] b
builtin-overflow.c:104:46: error: invalid type for argument 3:
builtin-overflow.c:104:46: void *p
builtin-overflow.c:106:37: error: not enough arguments for __builtin_mul_overflow
@@ -211,15 +211,15 @@ builtin-overflow.c:107:37: error: not enough arguments for __builtin_mul_overflo
builtin-overflow.c:108:37: error: not enough arguments for __builtin_mul_overflow
builtin-overflow.c:109:37: error: too many arguments for __builtin_mul_overflow
builtin-overflow.c:110:38: error: invalid type for argument 1:
-builtin-overflow.c:110:38: int enum e [signed] [addressable] e
+builtin-overflow.c:110:38: int enum e [addressable] e
builtin-overflow.c:111:41: error: invalid type for argument 2:
-builtin-overflow.c:111:41: int enum e [signed] [addressable] e
+builtin-overflow.c:111:41: int enum e [addressable] e
builtin-overflow.c:112:45: error: invalid type for argument 3:
builtin-overflow.c:112:45: int enum e *
builtin-overflow.c:113:38: error: invalid type for argument 1:
-builtin-overflow.c:113:38: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:113:38: bool [addressable] [usertype] b
builtin-overflow.c:114:41: error: invalid type for argument 2:
-builtin-overflow.c:114:41: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:114:41: bool [addressable] [usertype] b
builtin-overflow.c:115:45: error: invalid type for argument 3:
builtin-overflow.c:115:45: bool *
builtin-overflow.c:116:44: error: invalid type for argument 3:
@@ -229,17 +229,17 @@ builtin-overflow.c:119:39: error: not enough arguments for __builtin_mul_overflo
builtin-overflow.c:120:39: error: not enough arguments for __builtin_mul_overflow_p
builtin-overflow.c:121:39: error: too many arguments for __builtin_mul_overflow_p
builtin-overflow.c:122:40: error: invalid type for argument 1:
-builtin-overflow.c:122:40: int enum e [signed] [addressable] e
+builtin-overflow.c:122:40: int enum e [addressable] e
builtin-overflow.c:123:43: error: invalid type for argument 2:
-builtin-overflow.c:123:43: int enum e [signed] [addressable] e
+builtin-overflow.c:123:43: int enum e [addressable] e
builtin-overflow.c:124:46: error: invalid type for argument 3:
-builtin-overflow.c:124:46: int enum e [signed] [addressable] e
+builtin-overflow.c:124:46: int enum e [addressable] e
builtin-overflow.c:125:40: error: invalid type for argument 1:
-builtin-overflow.c:125:40: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:125:40: bool [addressable] [usertype] b
builtin-overflow.c:126:43: error: invalid type for argument 2:
-builtin-overflow.c:126:43: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:126:43: bool [addressable] [usertype] b
builtin-overflow.c:127:46: error: invalid type for argument 3:
-builtin-overflow.c:127:46: bool [unsigned] [addressable] [usertype] b
+builtin-overflow.c:127:46: bool [addressable] [usertype] b
builtin-overflow.c:128:46: error: invalid type for argument 3:
builtin-overflow.c:128:46: void *p
* check-error-end
diff --git a/validation/cast-bad-00.c b/validation/cast-bad-00.c
index 30aae237..6d15485d 100644
--- a/validation/cast-bad-00.c
+++ b/validation/cast-bad-00.c
@@ -38,10 +38,10 @@ void struct_to_int(u16 val)
*
* check-error-start
cast-bad-00.c:25:18: warning: incorrect type in argument 2 (different base types)
-cast-bad-00.c:25:18: expected unsigned int [unsigned] [usertype]
+cast-bad-00.c:25:18: expected unsigned int [usertype]
cast-bad-00.c:25:18: got union u [assigned] u
cast-bad-00.c:33:18: warning: incorrect type in argument 2 (different base types)
-cast-bad-00.c:33:18: expected unsigned int [unsigned] [usertype]
+cast-bad-00.c:33:18: expected unsigned int [usertype]
cast-bad-00.c:33:18: got struct s [assigned] s
* check-error-end
*/
diff --git a/validation/choose_expr.c b/validation/choose_expr.c
index b075e656..b5d2b4e6 100644
--- a/validation/choose_expr.c
+++ b/validation/choose_expr.c
@@ -7,10 +7,10 @@ static int z = 1/(sizeof(__builtin_choose_expr(1,s,0)) - 42);
* check-name: choose expr builtin
* check-error-start
choose_expr.c:1:51: warning: incorrect type in initializer (different base types)
-choose_expr.c:1:51: expected int static [signed] [toplevel] x
+choose_expr.c:1:51: expected int static [toplevel] x
choose_expr.c:1:51: got void
choose_expr.c:2:41: warning: incorrect type in initializer (different base types)
-choose_expr.c:2:41: expected int static [signed] [toplevel] y
+choose_expr.c:2:41: expected int static [toplevel] y
choose_expr.c:2:41: got char *
choose_expr.c:4:17: warning: division by zero
* check-error-end
diff --git a/validation/expand/builtin-expect.c b/validation/expand/builtin-expect.c
index 1207c132..f4e0664b 100644
--- a/validation/expand/builtin-expect.c
+++ b/validation/expand/builtin-expect.c
@@ -86,10 +86,10 @@ fptr:
*
* check-error-start
expand/builtin-expect.c:33:33: warning: incorrect type in argument 1 (different base types)
-expand/builtin-expect.c:33:33: expected long [signed]
+expand/builtin-expect.c:33:33: expected long
expand/builtin-expect.c:33:33: got void *a
expand/builtin-expect.c:33:36: warning: incorrect type in argument 2 (different base types)
-expand/builtin-expect.c:33:36: expected long [signed]
+expand/builtin-expect.c:33:36: expected long
expand/builtin-expect.c:33:36: got void *a
expand/builtin-expect.c:33:32: warning: incorrect type in return expression (different base types)
expand/builtin-expect.c:33:32: expected void *