Just noticed something
If a target depends on two files which happen to have the same contents, changing one of them might not cause a rebuild.
Here's a small example
Two empty files are created a and b, and concat.do is created to concatenate them:
redo-ifchange a b
echo "File a:" > $3
cat a >> $3
echo "\nFile b:">> $3
cat b >> $3
If you redo target concat and than change file a, redo won't notice the change.
This might be a rare and degenerate example and might not be worth fixing.