aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2009-08-28 21:30:08 +0000
committerChristopher Li <sparse@chrisli.org>2009-10-16 20:27:58 +0000
commit7fc4304ac3b0d7389eac368a044d7381eec6c197 (patch)
tree47cc913afe44a10533c81640efb05468ab8523c3 /parse.c
parentSparse 0.4.2 (diff)
downloadsparse-7fc4304ac3b0d7389eac368a044d7381eec6c197.tar.gz
sparse-7fc4304ac3b0d7389eac368a044d7381eec6c197.tar.bz2
sparse-7fc4304ac3b0d7389eac368a044d7381eec6c197.zip
do not ignore attribute 'noreturn'...
Hello, enclosed is a simple patch adding support for attribute 'noreturn' to the parser. The enhancement makes it possible to optimize walk through CFG and thus help us to fight with the state explosion. The benefit is demonstrated on a simple real-world example. Generated CFG before patch: http://dudka.cz/devel/html/slsparse-before/slplug.c-handle_stmt_assign.svg Generated CFG after patch: http://dudka.cz/devel/html/slsparse-after/slplug.c-handle_stmt_assign.svg It's one of the key features I am currently missing in SPARSE in contrast to gcc used as parser. Thanks in advance for considering it! Signed-off-by: Kamil Dudka <kdudka@redhat.com> Signed-off-by: Christopher Li <sparse@chrisli.org>
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/parse.c b/parse.c
index 5e75242..90403d8 100644
--- a/parse.c
+++ b/parse.c
@@ -489,8 +489,8 @@ static struct init_keyword {
{ "const", NS_KEYWORD, .op = &ignore_attr_op },
{ "__const", NS_KEYWORD, .op = &ignore_attr_op },
{ "__const__", NS_KEYWORD, .op = &ignore_attr_op },
- { "noreturn", NS_KEYWORD, .op = &ignore_attr_op },
- { "__noreturn__", NS_KEYWORD, .op = &ignore_attr_op },
+ { "noreturn", NS_KEYWORD, MOD_NORETURN, .op = &attr_mod_op },
+ { "__noreturn__", NS_KEYWORD, MOD_NORETURN, .op = &attr_mod_op },
{ "no_instrument_function", NS_KEYWORD, .op = &ignore_attr_op },
{ "__no_instrument_function__", NS_KEYWORD, .op = &ignore_attr_op },
{ "sentinel", NS_KEYWORD, .op = &ignore_attr_op },