aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2016-03-15 01:42:43 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2016-03-15 01:42:43 +0100
commit26a8813fa33bf0812690f848e0ef5d432587a82f (patch)
tree6b196c9a8b3779b7c85edb7eb2feee8c64dada80
parent26a7773c2f46845e5c94a98f6ee5c96081fa511d (diff)
downloadgcc-26a8813fa33bf0812690f848e0ef5d432587a82f.zip
gcc-26a8813fa33bf0812690f848e0ef5d432587a82f.tar.gz
gcc-26a8813fa33bf0812690f848e0ef5d432587a82f.tar.bz2
genrecog: Fix crash on invalid input
If your machine description refers to a non-existent predicate genrecog crashes. This fixes it. * genrecog.c (match_pattern_2): If pred is NULL don't call safe_predicate_mode on it. From-SVN: r234206
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/genrecog.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a5ada00..637ef039 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * genrecog.c (match_pattern_2): If pred is NULL don't call
+ safe_predicate_mode on it.
+
2016-03-14 Jakub Jelinek <jakub@redhat.com>
PR middle-end/70219
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index f8b8ef4..47e4266 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -4037,7 +4037,7 @@ match_pattern_2 (state *s, md_rtx_info *info, position *pos, rtx pattern)
/* Check the mode first, to distinguish things like SImode
and DImode register_operands, as described above. */
machine_mode mode = GET_MODE (e->pattern);
- if (safe_predicate_mode (pred, mode))
+ if (pred && safe_predicate_mode (pred, mode))
s = add_decision (s, rtx_test::mode (e->pos), mode, true);
/* Assign to operands[] first, so that the rtx usually doesn't