diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 86e3cae33ccbc68c643f6762244f927dfabe3495..4b838a491175863b2f7e92ecf672ff0a5ce46096 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -640,10 +640,15 @@ if_stmt:
 	{
 		markdcl();
 	}
-	if_header loop_body
+	if_header
+	{
+		if($3->ntest == N)
+			yyerror("missing condition in if statement");
+	}
+	loop_body
 	{
 		$$ = $3;
-		$$->nbody = $4;
+		$$->nbody = $5;
 		// no popdcl; maybe there's an LELSE
 	}
 
diff --git a/test/syntax/if.go b/test/syntax/if.go
new file mode 100644
index 0000000000000000000000000000000000000000..913d4188540a750abd2b0558c89b23cbf730bb76
--- /dev/null
+++ b/test/syntax/if.go
@@ -0,0 +1,15 @@
+// errchk $G $D/$F.go
+
+// Copyright 2011 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+	if {  // ERROR "missing condition"
+	}
+	
+	if x(); {  // ERROR "missing condition"
+	}
+}