diff --git a/Cython/Compiler/FlowControl.py b/Cython/Compiler/FlowControl.py
index 22f226997f266c7022ce7644ae2744395479f9e5..8ef14b1400b86bde0a6c9b73dc2dffa305b43eb1 100644
--- a/Cython/Compiler/FlowControl.py
+++ b/Cython/Compiler/FlowControl.py
@@ -615,17 +615,19 @@ def check_definitions(flow, compiler_directives):
 
     # Unused entries
     for entry in flow.entries:
-        if (not entry.cf_references and not entry.is_pyclass_attr
-            and not entry.in_closure
-            and entry.name != '_'):
-            if entry.is_arg:
-                if warn_unused_arg:
-                    messages.warning(entry.pos, "Unused argument '%s'" %
-                                     entry.name)
-            else:
-                if warn_unused:
-                    messages.warning(entry.pos, "Unused entry '%s'" %
-                                     entry.name)
+        if (not entry.cf_references
+                and not entry.is_pyclass_attr
+                and not entry.in_closure):
+            if entry.name != '_':
+                # '_' is often used for unused variables, e.g. in loops
+                if entry.is_arg:
+                    if warn_unused_arg:
+                        messages.warning(entry.pos, "Unused argument '%s'" %
+                                         entry.name)
+                else:
+                    if warn_unused:
+                        messages.warning(entry.pos, "Unused entry '%s'" %
+                                         entry.name)
             entry.cf_used = False
 
     messages.report()