From: Joel Rosdahl Date: Thu, 12 Sep 2019 18:50:46 +0000 (+0200) Subject: Support GCC 9’s -gz=[type] option X-Git-Tag: v3.7.4~2 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=cb7a05a772ce3dcec58da16d957420f36cb97f75;p=thirdparty%2Fccache.git Support GCC 9’s -gz=[type] option -gz[=type] neither disables nor enables generation of debug info, so don’t enable the fallback behavior of hashing the current directory when seeing -gz[=type] alone. Closes #464. --- diff --git a/src/ccache.c b/src/ccache.c index 6204ce212..f56445bee 100644 --- a/src/ccache.c +++ b/src/ccache.c @@ -2778,6 +2778,11 @@ cc_process_args(struct args *args, struct args **preprocessor_args, continue; } + if (str_startswith(argv[i], "-gz")) { + // -gz[=type] neither disables nor enables debug info. + continue; + } + char last_char = argv[i][strlen(argv[i]) - 1]; if (last_char == '0') { // "-g0", "-ggdb0" or similar: All debug information disabled. diff --git a/test/suites/base.bash b/test/suites/base.bash index 6fb76d840..5e9cd4d0c 100644 --- a/test/suites/base.bash +++ b/test/suites/base.bash @@ -370,6 +370,50 @@ base_tests() { expect_stat 'cache hit (preprocessed)' 2 expect_stat 'cache miss' 1 + # ------------------------------------------------------------------------- + TEST "Directory is not hashed if using -gz" + + if $REAL_COMPILER -c test1.c -gz -o /dev/null 2>/dev/null; then + mkdir dir1 dir2 + cp test1.c dir1 + cp test1.c dir2 + + cd dir1 + $CCACHE_COMPILE -c test1.c -gz + expect_stat 'cache hit (preprocessed)' 0 + expect_stat 'cache miss' 1 + $CCACHE_COMPILE -c test1.c -gz + expect_stat 'cache hit (preprocessed)' 1 + expect_stat 'cache miss' 1 + + cd ../dir2 + $CCACHE_COMPILE -c test1.c -gz + expect_stat 'cache hit (preprocessed)' 2 + expect_stat 'cache miss' 1 + fi + + # ------------------------------------------------------------------------- + TEST "Directory is not hashed if using -gz=zlib" + + if $REAL_COMPILER -c test1.c -gz=zlib -o /dev/null 2>/dev/null; then + mkdir dir1 dir2 + cp test1.c dir1 + cp test1.c dir2 + + cd dir1 + $CCACHE_COMPILE -c test1.c -gz=zlib + expect_stat 'cache hit (preprocessed)' 0 + expect_stat 'cache miss' 1 + $CCACHE_COMPILE -c test1.c -gz=zlib + expect_stat 'cache hit (preprocessed)' 1 + expect_stat 'cache miss' 1 + + cd ../dir2 + $CCACHE_COMPILE -c test1.c -gz=zlib + expect_stat 'cache hit (preprocessed)' 2 + expect_stat 'cache miss' 1 + fi + # ------------------------------------------------------------------------- TEST "CCACHE_NOHASHDIR"