Hi all, I merged this old patch with current trunk. I also make the following changes (1) not using weak references. Now every *profile_atomic() has it's own .o so that none of them will be in the final binary if -fprofile-generate-atomic is not specified. (2) more value profilers have the atomic version. (3) not link to libatomic. I used to link the libatomic in the presence of -fprofile-generate-atomic, per Andrew's suggestion. It used to work. But now if I can add -latomic in the SPEC, it cannot find the libatomic.so.1 (unless I specify the PATH). I did not find an easy way to statically link libatomic.a. Andrew: Do you have any suggestion? Or should we let the user link to libatomic.a if the builtins are not expanded? Is this OK for trunk? Thanks, -Rong On Mon, Jan 7, 2013 at 12:55 PM, Rong Xu wrote: > Function __gcov_indirect_call_profiler_atomic (which contains call to > the atomic function) is always emitted in libgcov. > Since we only link libatomic when -fprofile-gen-atomic is specified, > we have to make the atomic function weak -- otherwise, there is a > unsat for regular FDO gen build (of course, when the builtin is not > expanded). > > An alternative it to always link libatomic together with libgcov. Then > we don't need the weak stuff. I'm not sure when one is better. > > -Rong > > On Mon, Jan 7, 2013 at 12:36 PM, Richard Henderson wrote: >> On 01/03/2013 04:42 PM, Rong Xu wrote: >>> It links libatomic when -fprofile-gen-atomic is specified for FDO >>> instrumentation build. Here I assume libatomic is always installed. >>> Andrew: do you think if this is reasonable? >>> >>> It also disables the functionality if target does not support weak >>> (ie. TARGET_SUPPORTS_WEAK == 0). >> >> Since you're linking libatomic, you don't need weak references. >> >> I think its ok to assume libatomic is installed, given that the >> user has had to explicitly use the command-line option. >> >> >> r~