There were two dead stores found by the llvm analyzer (the value
is overwritten before it is read).  I've also marked functions
calling done() __dead to avoid false positives.

There are two more warnings from the analyzer but I'm fairly certain
that they are false positives.

 - todd

Index: closure.c
===================================================================
RCS file: /home/cvs/openbsd/src/usr.bin/yacc/closure.c,v
retrieving revision 1.13
diff -u -r1.13 closure.c
--- closure.c   13 Mar 2014 01:18:22 -0000      1.13
+++ closure.c   1 Dec 2014 16:47:57 -0000
@@ -105,8 +105,6 @@
                                }
                        }
                }
-
-               vrow += varsetsize;
                rrow += rulesetsize;
        }
 
Index: defs.h
===================================================================
RCS file: /home/cvs/openbsd/src/usr.bin/yacc/defs.h,v
retrieving revision 1.17
diff -u -r1.17 defs.h
--- defs.h      8 Mar 2014 01:05:39 -0000       1.17
+++ defs.h      1 Dec 2014 16:47:57 -0000
@@ -306,42 +306,42 @@
 extern void closure(short *, int);
 extern void finalize_closure(void);
 
-extern void fatal(char *);
+extern __dead void fatal(char *);
 
 extern void reflexive_transitive_closure(unsigned *, int);
-extern void done(int);
+extern __dead void done(int);
 
-extern void no_space(void);
-extern void open_error(char *);
-extern void open_write_error(char *);
-extern void unexpected_EOF(void);
+extern __dead void no_space(void);
+extern __dead void open_error(char *);
+extern __dead void open_write_error(char *);
+extern __dead void unexpected_EOF(void);
 extern void print_pos(char *, char *);
-extern void syntax_error(int, char *, char *);
-extern void unterminated_comment(int, char *, char *);
-extern void unterminated_string(int, char *, char *);
-extern void unterminated_text(int, char *, char *);
-extern void unterminated_union(int, char *, char *);
-extern void over_unionized(char *);
-extern void illegal_tag(int, char *, char *);
-extern void illegal_character(char *);
-extern void used_reserved(char *);
-extern void tokenized_start(char *);
+extern __dead void syntax_error(int, char *, char *);
+extern __dead void unterminated_comment(int, char *, char *);
+extern __dead void unterminated_string(int, char *, char *);
+extern __dead void unterminated_text(int, char *, char *);
+extern __dead void unterminated_union(int, char *, char *);
+extern __dead void over_unionized(char *);
+extern __dead void illegal_tag(int, char *, char *);
+extern __dead void illegal_character(char *);
+extern __dead void used_reserved(char *);
+extern __dead void tokenized_start(char *);
 extern void retyped_warning(char *);
 extern void reprec_warning(char *);
 extern void revalued_warning(char *);
-extern void terminal_start(char *);
+extern __dead void terminal_start(char *);
 extern void restarted_warning(void);
-extern void no_grammar(void);
-extern void terminal_lhs(int);
+extern __dead void no_grammar(void);
+extern __dead void terminal_lhs(int);
 extern void prec_redeclared(void);
-extern void unterminated_action(int, char *, char *);
+extern __dead void unterminated_action(int, char *, char *);
 extern void dollar_warning(int, int);
-extern void dollar_error(int, char *, char *);
-extern void untyped_lhs(void);
-extern void untyped_rhs(int, char *);
-extern void unknown_rhs(int);
+extern __dead void dollar_error(int, char *, char *);
+extern __dead void untyped_lhs(void);
+extern __dead void untyped_rhs(int, char *);
+extern __dead void unknown_rhs(int);
 extern void default_action_warning(void);
-extern void undefined_goal(char *);
+extern __dead void undefined_goal(char *);
 extern void undefined_symbol_warning(char *);
 
 extern void lalr(void);
Index: reader.c
===================================================================
RCS file: /home/cvs/openbsd/src/usr.bin/yacc/reader.c,v
retrieving revision 1.29
diff -u -r1.29 reader.c
--- reader.c    9 Oct 2014 03:02:18 -0000       1.29
+++ reader.c    1 Dec 2014 16:49:31 -0000
@@ -928,7 +928,6 @@
                c = nextc();
                if (c == EOF)
                        unexpected_EOF();
-               value = UNDEFINED;
                if (isdigit(c)) {
                        value = get_number();
                        if (bp->value != UNDEFINED && value != bp->value)

Reply via email to