diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 194c9bf026c3d9be7fec70b3cecad1b4caf959de..4c02c9d654bcb65875a5e15d05597eb6a2928543 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-28  Wilco Dijkstra  <wdijkstr@arm.com>
+
+	* gimple-fold.c (gimple_fold_builtin): After failing to fold
+	strchr, also try the generic folding.
+
 2016-09-28  Martin Sebor  <msebor@redhat.com>
 
 	PR c/77762
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index f5a5e5db2830d4f7ecc05084b488f16c3d67f3fb..1aae8456bc81c0291ebcf136ad5c70fde2e711a5 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -2948,7 +2948,10 @@ gimple_fold_builtin (gimple_stmt_iterator *gsi)
     case BUILT_IN_STRNCAT:
       return gimple_fold_builtin_strncat (gsi);
     case BUILT_IN_STRCHR:
-      return gimple_fold_builtin_strchr (gsi);
+      if (gimple_fold_builtin_strchr (gsi))
+	return true;
+      /* Perform additional folding in builtin.c.  */
+      break;
     case BUILT_IN_FPUTS:
       return gimple_fold_builtin_fputs (gsi, gimple_call_arg (stmt, 0),
 					gimple_call_arg (stmt, 1), false);