diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a7066fb7ad1969919d0274c08de78aa0a5033291..98e49cdb9c0fb7636228650144355fccd86b296b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
+
+	* hash-map.h (gt_cleare_cache): Avoid UB.
+
 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
diff --git a/gcc/hash-map.h b/gcc/hash-map.h
index 6b8365a9d0a6bc066a7780b264a519fe2e47461b..10ae52d194add05d963b4d6b2a84c99db0e5038c 100644
--- a/gcc/hash-map.h
+++ b/gcc/hash-map.h
@@ -274,7 +274,8 @@ template<typename K, typename V, typename H>
 static inline void
 gt_cleare_cache (hash_map<K, V, H> *h)
 {
-  gt_cleare_cache (&h->m_table);
+  if (h)
+    gt_cleare_cache (&h->m_table);
 }
 
 template<typename K, typename V, typename H>