вот сам сделал патч для gcc abs error;
вроде собирает всё нормально и проверку проходит, но
просьба к знающим людям, проверьте правильность патча
с точки зрения C и в контексте fold-const.c для gcc-3.2.2
--- gcc/fold-const.c.orig 2002-12-04 19:28:25.000000000 +0000
+++ gcc/fold-const.c 2007-11-25 10:06:20.000000000 +0000
@@ -4639,12 +4639,12 @@
to change the code. */
if (tree_int_cst_sgn (op1) < 0 || tree_int_cst_sgn (c) < 0)
{
- if (code == CEIL_DIV_EXPR)
- code = FLOOR_DIV_EXPR;
- else if (code == FLOOR_DIV_EXPR)
- code = CEIL_DIV_EXPR;
- else if (code != MULT_EXPR
- && code != CEIL_MOD_EXPR && code != FLOOR_MOD_EXPR)
+// if (code == CEIL_DIV_EXPR)
+// code = FLOOR_DIV_EXPR;
+// else if (code == FLOOR_DIV_EXPR)
+// code = CEIL_DIV_EXPR;
+// else if (code != MULT_EXPR
+// && code != CEIL_MOD_EXPR && code != FLOOR_MOD_EXPR)
break;
}