Commit 26ebd2f5 authored by Michael Beck's avatar Michael Beck
Browse files

mode_overflow_on_unary_Minus() added

[r5478]
parent 49db5864
......@@ -927,33 +927,45 @@ int mode_honor_signed_zeros(const ir_mode *mode)
return 0;
}
/*
* Returns non-zero if the given mode might overflow on unary Minus.
*
* This does NOT happen on IEEE 754.
*/
int mode_overflow_on_unary_Minus(const ir_mode *mode)
{
if (mode->sort == irms_float_number)
return mode->arithmetic == irma_ieee754 ? 0 : 1;
return 1;
}
void finish_mode(void) {
obstack_free(&modes, 0);
mode_T = NULL;
mode_X = NULL;
mode_M = NULL;
mode_BB = NULL;
mode_T = NULL;
mode_X = NULL;
mode_M = NULL;
mode_BB = NULL;
mode_ANY = NULL;
mode_BAD = NULL;
mode_F = NULL;
mode_D = NULL;
mode_E = NULL;
mode_Bs = NULL;
mode_Bu = NULL;
mode_Hs = NULL;
mode_Hu = NULL;
mode_Is = NULL;
mode_Iu = NULL;
mode_Ls = NULL;
mode_Lu = NULL;
mode_C = NULL;
mode_U = NULL;
mode_b = NULL;
mode_P = NULL;
mode_F = NULL;
mode_D = NULL;
mode_E = NULL;
mode_Bs = NULL;
mode_Bu = NULL;
mode_Hs = NULL;
mode_Hu = NULL;
mode_Is = NULL;
mode_Iu = NULL;
mode_Ls = NULL;
mode_Lu = NULL;
mode_C = NULL;
mode_U = NULL;
mode_b = NULL;
mode_P = NULL;
mode_P_mach = NULL;
}
......@@ -439,4 +439,9 @@ ir_mode *find_double_bits_int_mode(const ir_mode *mode);
*/
int mode_honor_signed_zeros(const ir_mode *mode);
/**
* Returns non-zero if the given mode might overflow on unary Minus.
*/
int mode_overflow_on_unary_Minus(const ir_mode *mode);
#endif /* _IRMODE_H_ */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment