Follow-up Comment #7, bug #61042 (project make):

There are 2 situations when implicit rule lookup takes this short cut.

1.
++++
hello.tsk: hello.o
%.tsk: %.o; touch $@
----

and

2.
++++
hello.tsk:
%.tsk: %.o; touch $@
hello.o:
----


There are 2 if branches in implicit.c

This branch handles the case 1 described above.
++++

for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next)
if (streq (dep_name (expl_d), d->name))
  break;
if (expl_d != 0)
{
  (pat++)->name = d->name;
  continue;
}
----

and

This branch handles the case 2 described above.

++++

f = lookup_file (d->name);
if (f /* || ((!dep->changed || check_lastslash) */
  || file_exists_p (d->name))
{
  (pat++)->name = d->name;
  continue;
}
----

This patch has both if branches combined to handle both cases, because the
handling is the same.
The conflict was introduced by this fix to set f->is_explicit.
Let me merge master onto my branch and resubmit.

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?61042>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/


Reply via email to