fix implicit_pattern_rule_chain
diff --git a/eval.go b/eval.go
index 94adc1e..335bb49 100644
--- a/eval.go
+++ b/eval.go
@@ -218,6 +218,7 @@
 		rule.vars.Assign(lhs, rhs)
 	} else {
 		rule.cmds = ast.cmds
+		Log("rule outputs:%q cmds:%q", rule.outputs, rule.cmds)
 	}
 	ev.outRules = append(ev.outRules, rule)
 }
diff --git a/exec.go b/exec.go
index e11d715..cc68338 100644
--- a/exec.go
+++ b/exec.go
@@ -34,6 +34,10 @@
 }
 
 func (ex *Executor) exists(target string) bool {
+	_, present := ex.rules[target]
+	if present {
+		return true
+	}
 	rule, present := ex.rules[".PHONY"]
 	if present {
 		for _, input := range rule.inputs {
@@ -239,7 +243,7 @@
 	}
 
 	for _, input := range rule.orderOnlyInputs {
-		if ex.exists(input) {
+		if exists(input) {
 			continue
 		}
 		ts, err := ex.build(vars, input)
@@ -272,6 +276,7 @@
 	ev.filename = rule.filename
 	ev.lineno = rule.cmdLineno
 	var cmds []string
+	Log("Building: %s cmds:%q", output, rule.cmds)
 	for _, cmd := range rule.cmds {
 		if strings.IndexByte(cmd, '$') < 0 {
 			// fast path.
diff --git a/testcase/implicit_pattern_rule_chain.mk b/testcase/implicit_pattern_rule_chain.mk
index d744478..9eb3dcf 100644
--- a/testcase/implicit_pattern_rule_chain.mk
+++ b/testcase/implicit_pattern_rule_chain.mk
@@ -1,4 +1,3 @@
-# TODO
 test: foo
 
 foo: foo.o