From 888515bf53297a3d9d42781b5c6513bc57e58a52 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Wed, 1 Dec 2010 10:32:03 +0000 Subject: [PATCH] create new_tarval_from_long_double function and change argument of new_tarval_from_double to double - so bindings can get away with C89 types only [r28167] --- include/libfirm/tv.h | 14 ++++++++++++-- ir/tv/tv.c | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/libfirm/tv.h b/include/libfirm/tv.h index ecbec1365..59fdf247a 100644 --- a/include/libfirm/tv.h +++ b/include/libfirm/tv.h @@ -203,7 +203,12 @@ FIRM_API int tarval_is_long(ir_tarval *tv); * new_tarval_from_str() * new_tarval_from_long() */ -FIRM_API ir_tarval *new_tarval_from_double(long double d, ir_mode *mode); +FIRM_API ir_tarval *new_tarval_from_double(double d, ir_mode *mode); + +/** + * same as new_tarval_from_double(), but with a long double argument + */ +FIRM_API ir_tarval *new_tarval_from_long_double(long double d, ir_mode *mode); /** * This returns a double with the value represented value, or @@ -214,7 +219,12 @@ FIRM_API ir_tarval *new_tarval_from_double(long double d, ir_mode *mode); * * @param tv the tarval */ -FIRM_API long double get_tarval_double(ir_tarval *tv); +FIRM_API double get_tarval_double(ir_tarval *tv); + +/** + * same as get_tarval_double but returns a long double value + */ +FIRM_API long double get_tarval_long_double(ir_tarval *tv); /** * This validates if tarval_to_double() will return a satisfying diff --git a/ir/tv/tv.c b/ir/tv/tv.c index dbdf9b6e0..17a79d040 100644 --- a/ir/tv/tv.c +++ b/ir/tv/tv.c @@ -480,7 +480,7 @@ long get_tarval_long(ir_tarval* tv) return sc_val_to_long(tv->value); } -ir_tarval *new_tarval_from_double(long double d, ir_mode *mode) +ir_tarval *new_tarval_from_long_double(long double d, ir_mode *mode) { const ieee_descriptor_t *desc; @@ -490,6 +490,11 @@ ir_tarval *new_tarval_from_double(long double d, ir_mode *mode) return get_tarval(fc_get_buffer(), fc_get_buffer_length(), mode); } +ir_tarval *new_tarval_from_double(double d, ir_mode *mode) +{ + return new_tarval_from_long_double(d, mode); +} + /* returns non-zero if can be converted to double */ int tarval_is_double(ir_tarval *tv) { @@ -498,13 +503,18 @@ int tarval_is_double(ir_tarval *tv) return (get_mode_sort(tv->mode) == irms_float_number); } -long double get_tarval_double(ir_tarval *tv) +long double get_tarval_long_double(ir_tarval *tv) { assert(tarval_is_double(tv)); return fc_val_to_ieee754((const fp_value*) tv->value); } +double get_tarval_double(ir_tarval *tv) +{ + return get_tarval_long_double(tv); +} + /* * Access routines for tarval fields ======================================== -- 2.20.1