When committed in r219353, this patch originally caused problems because I have had only tested it using an optimized build. However, in debug builds, LLD (in Driver.cpp) adds two additional passes that serializes all atoms via YAML and reads it back. Since I have changed ObjectAtom to hold a new reference, the serialization was removing the extra data.
I decided to implement this in another way, similar to the original MIPS way, by using a StringSet that holds the names of all copied atoms instead of directly holding a reference to the copied atom. In this way, I simplify this patch and eliminate the necessity of changing the DefinedAtom hierarchy to hold a new data.