aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeyering <meyering@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-24 12:07:30 +0000
committermeyering <meyering@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-24 12:07:30 +0000
commit891852a215c162aafb1fe9a1790dd82e86f52b60 (patch)
treeb4b4a02af90bd84b599bbfc17712efa838f0e058
parent15fa0281037d91fb291498550eb9fa39ca806282 (diff)
genattrtab: avoid NULL-deref on error
* genattrtab.c (gen_attr): Avoid NULL-deref after diagnosing absence of an define_enum call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186761 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/genattrtab.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f02bf710fb1..fb6aea6a6e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-24 Jim Meyering <meyering@redhat.com>
+
+ * genattrtab.c (gen_attr): Avoid NULL-deref after diagnosing
+ absence of an define_enum call.
+
2012-04-24 Richard Guenther <rguenther@suse.de>
* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): If
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 4a4c2a2c8aa..bfbe3e80583 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -1,6 +1,6 @@
/* Generate code from machine description to compute values of attributes.
Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
@@ -2993,8 +2993,9 @@ gen_attr (rtx exp, int lineno)
if (!et || !et->md_p)
error_with_line (lineno, "No define_enum called `%s' defined",
attr->name);
- for (ev = et->values; ev; ev = ev->next)
- add_attr_value (attr, ev->name);
+ if (et)
+ for (ev = et->values; ev; ev = ev->next)
+ add_attr_value (attr, ev->name);
}
else if (*XSTR (exp, 1) == '\0')
attr->is_numeric = 1;