It is not worth talking about, but since I am an embedded developer I wanted to know. So I have written a test with an interesting results:
1. When passing a double or a double& to a function with compatible parameters there is no difference because the parameters are not touched.
2. When passing a double to a function with incompatible parameters it requires two more instructions then a double& on a 32bit target. On a 64 bit target it is the same.
3. Making a double from a double& takes at least on instruction more for fetching the address of the defence on both architectures.
4. passing a double& in one call and the passing a double in a sub call takes 3 instructions more than passing double in both calls, on a both targets. On a 64 bit system both versions are two instructions shorter. 

Conclusion:
There is no general answer what is best, but we should avoid converting between double and double&.