diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d8ae41567a03152b2bb8ba6573cc801df8b78cf3..47de4eeaca2f16e9a5747b447a1bb63c7a0b5c50 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-05  Richard Guenther  <rguenther@suse.de>
+
+	* tree-pretty-print.c (dump_generic_node): Properly test
+	the result of exact_log2.
+
 2012-07-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
 	* config/s390/s390-protos.h (s390_expand_movmem)
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 44d3c10b7d81a19b33195cd9e7f19ba8e5df0384..f418d3999462cd0ea9a3f8a2b48eaa9e0326b308 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -743,7 +743,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
 				      ? "unsigned long long"
 				      : "signed long long"));
 		else if (TYPE_PRECISION (node) >= CHAR_TYPE_SIZE
-			 && exact_log2 (TYPE_PRECISION (node)))
+			 && exact_log2 (TYPE_PRECISION (node)) != -1)
 		  {
 		    pp_string (buffer, (TYPE_UNSIGNED (node) ? "uint" : "int"));
 		    pp_decimal_int (buffer, TYPE_PRECISION (node));