Skip to content

Does sccache support the argument -march=native? #2140

Description

@pollux1122

I'm testing cache functionality with the -march=native flag on different computers with different CPU microarchitectures. I determine the architecture using the command:
gcc -march=native -Q --help=target | grep march
1 host - skylake
2 host - haswell

After building a cmake target on one host, all object data was cached. However, when running the build on the second host, I noticed that sccache didn't find suitable artifacts in its cache and began building some object files itself.
Compile requests 66
Compile requests executed 66
Cache hits 14
Cache hits (C/C++) 14
Cache misses 52
Cache misses (C/C++) 52

Upon subsequent runs, sccache detected that it already had the necessary artifacts and reused them.
Compile requests 66
Compile requests executed 66
Cache hits 66
Cache hits (C/C++) 66
Cache misses 0
Cache misses (C/C++) 0

How did sccache understand that these artifacts were not suitable? For the same object file, different hash sums are generated on hosts 1 and 2.
The source code is the same, and the build arguments are identical.
To test, I checked the sha256sum of a sample object file (recompiled on different architectures) on both hosts, and the sha256sum turned out to be the same.
If we assume that sccache itself somewhere inside reveals the optimal arguments for assembly, then why were some of the object files still used from caches?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions