If aarch64-tune.md was older than gentune.sh or aarch64-cores.def,
we'd try to overwrite it even if the current contents were correct.
This could cause problems with read-only source directories and
could cause spurious copying for rsync --archive.

Tested on aarch64-linux-gnu.  Also tested by changing aarch64-cores.def
and making sure that the file was updated appropriately.

Richard


2020-01-06  Richard Sandiford  <richard.sandif...@arm.com>

gcc/
        * config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
        Depend on...
        (s-aarch64-tune-md): ...this new stamp file.  Pipe the new contents
        to a temporary file and use move-if-change to update the real
        file where necessary.

Index: gcc/config/aarch64/t-aarch64
===================================================================
--- gcc/config/aarch64/t-aarch64        2020-01-06 12:58:16.453794569 +0000
+++ gcc/config/aarch64/t-aarch64        2020-01-06 13:01:23.332565292 +0000
@@ -24,11 +24,15 @@ OPTIONS_H_EXTRA += $(srcdir)/config/aarc
                   $(srcdir)/config/aarch64/aarch64-fusion-pairs.def \
                   $(srcdir)/config/aarch64/aarch64-tuning-flags.def
 
-$(srcdir)/config/aarch64/aarch64-tune.md: $(srcdir)/config/aarch64/gentune.sh \
+$(srcdir)/config/aarch64/aarch64-tune.md: s-aarch64-tune-md; @true
+s-aarch64-tune-md: $(srcdir)/config/aarch64/gentune.sh \
        $(srcdir)/config/aarch64/aarch64-cores.def
        $(SHELL) $(srcdir)/config/aarch64/gentune.sh \
                $(srcdir)/config/aarch64/aarch64-cores.def > \
+               tmp-aarch64-tune.md
+       $(SHELL) $(srcdir)/../move-if-change tmp-aarch64-tune.md \
                $(srcdir)/config/aarch64/aarch64-tune.md
+       $(STAMP) s-aarch64-tune-md
 
 aarch64-builtins.o: $(srcdir)/config/aarch64/aarch64-builtins.c $(CONFIG_H) \
   $(SYSTEM_H) coretypes.h $(TM_H) \

Reply via email to