This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: real.h: REAL_VALUE_TO_TARGET_DOUBLE


Omar Torres wrote:
On Thu, Oct 2, 2008 at 11:59 PM, Ian Lance Taylor <iant@google.com> wrote:
"Omar Torres" <gcc.omar@gmail.com> writes:

 Shouldn't this macro:
#define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) \
  real_to_target (OUT, &(IN), mode_for_size (64, MODE_FLOAT, 0))

 be using DOUBLE_TYPE_SIZE instead of the hard coded '64'? Am I missing
something here?
That would certainly be more logical.  In order to make that change,
you would have to consider each use of the macro to confirm that the
change would be valid.


In the target I am currently working, DOUBLE_TYPE_SIZE is defined as
32-bit, so the hard-coded '64' is causing trouble. I am planning on
doing this change on my local source tree, but wanted to discuss with
the community to see if there is some implementations details somewhere
that I need to consider as well.
As far as I can see, all but one use of this macro is in target
dependent code.  Are you having trouble from the single target
independent use?  Or perhaps your target dependent code should just
use REAL_VALUE_TO_TARGET_SINGLE instead?

Ian

 Both.
 Yes, I can use REAL_VALUE_TO_TARGET_SINGLE in the target dependent
files to work around this.
 I do not see a similar solution for the target independent code,
since the size mismatch cause the incorrect format (encode/decode
functions) to be use.

The size of the C type "double" is controlled by DOUBLE_TYPE_SIZE, not the size of the compiler mode "DFmode". This macro is referring to the latter -- a double-precision floating point mode.


r~



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]