genrecog: Fix crash on invalid input
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Mar 2016 00:42:43 +0000 (00:42 +0000)
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Mar 2016 00:42:43 +0000 (00:42 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234206 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/genrecog.c

index a5ada00..637ef03 100644 (file)
@@ -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
index f8b8ef4..47e4266 100644 (file)
@@ -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