Added support of creating a hardlink from one file to another file.
After a hardlink is added between two files, both file will have the same:
- UniqueID (inode)
- Size
- Buffer
This will bring replay of compilation closer to the actual compilation. There are instances where clang checks for the UniqueID of the file/header to be loaded which leads to a different behavior during replay as all files have different UniqueIDs.
It seems Status was designed to be immutable.
Can we copy or reassign the whole status at the points where we need it?