summaryrefslogtreecommitdiff
path: root/tools/gcc-plugins/frr-format.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gcc-plugins/frr-format.c')
-rw-r--r--tools/gcc-plugins/frr-format.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/tools/gcc-plugins/frr-format.c b/tools/gcc-plugins/frr-format.c
index efb2c6393c..e9f397f225 100644
--- a/tools/gcc-plugins/frr-format.c
+++ b/tools/gcc-plugins/frr-format.c
@@ -4241,6 +4241,11 @@ handle_finish_parse (void *event_data, void *data)
continue;
}
node = TREE_TYPE (node);
+
+ if (etab->t_unsigned)
+ node = c_common_unsigned_type (node);
+ else if (etab->t_signed)
+ node = c_common_signed_type (node);
}
etab->type = node;
@@ -4357,9 +4362,17 @@ handle_pragma_printfrr_ext (cpp_reader *dummy)
ttype = pragma_lex (&token, &loc);
/* qualifiers */
- if (ttype == CPP_NAME && !strcmp (IDENTIFIER_POINTER (token), "const"))
+ while (ttype == CPP_NAME)
{
- etab->t_const = true;
+ if (!strcmp (IDENTIFIER_POINTER (token), "const"))
+ etab->t_const = true;
+ else if (!strcmp (IDENTIFIER_POINTER (token), "signed"))
+ etab->t_signed = true;
+ else if (!strcmp (IDENTIFIER_POINTER (token), "unsigned"))
+ etab->t_unsigned = true;
+ else
+ break;
+
ttype = pragma_lex (&token, &loc);
}