* Copyright: (c) 1998-2003 Universität Karlsruhe
* Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
*/
-
-
#ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
#endif
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
+#endif
+#ifdef HAVE_STRING_H
# include <string.h>
-# include <stdbool.h>
+#endif
+
+# include <stddef.h>
# include "irmode_t.h"
# include "ident.h"
assert(get_mode_modecode(mode) < num_modes);
assert(mode_is_float(mode));
- return get_tarval_inf(mode);
+ return get_tarval_plus_inf(mode);
}
tarval *
return find_mode(&n);
}
+/*
+ * Returns non-zero if the given mode honors signed zero's, i.e.,
+ * a +0 and a -0 exists and handled differently.
+ */
+int mode_honor_signed_zeros(const ir_mode *mode)
+{
+ /* for floating point, we know that IEEE 754 has +0 and -0,
+ * but always handles it identical.
+ */
+ if (mode->sort == irms_float_number)
+ return mode->arithmetic == irma_ieee754 ? 0 : 1;
+ return 0;
+}
+
void finish_mode(void) {
obstack_free(&modes, 0);