diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2016-03-15 01:42:43 +0100 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2016-03-15 01:42:43 +0100 |
commit | 26a8813fa33bf0812690f848e0ef5d432587a82f (patch) | |
tree | 6b196c9a8b3779b7c85edb7eb2feee8c64dada80 | |
parent | 26a7773c2f46845e5c94a98f6ee5c96081fa511d (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/genrecog.c | 2 |
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 |