aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-10 23:47:59 +0000
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-10 23:47:59 +0000
commite9f2752c36f28ed8171c5aa27cd9ed0279d491dd (patch)
treeadad0f90141713da3675a70446f551f84710163a
parent9e4054cab91bc8bde1772d86a06859711fe496ac (diff)
Merge up to revision 130757ix86/gcc-4_1-branch
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/tags/ix86/gcc-4_1-branch@130760 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/fold-const.c3
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr34130.c12
-rw-r--r--svn-mergepoint1
6 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8de09945cf2..004fe65d805 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2007-11-29 Matthias Klose <doko@ubuntu.com>
+
+ Backport from mainline:
+ 2007-11-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/34130
+ * fold-const.c (extract_muldiv_1): Do not move negative
+ constants inside ABS_EXPR.
+
2007-11-16 Richard Guenther <rguenther@suse.de>
PR middle-end/34030
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index edb838c94c6..30a98ca3ef0 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20071126
+20071210
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index f031825f7ba..f9e58d27591 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5340,6 +5340,9 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
}
break;
}
+ /* If the constant is negative, we cannot simplify this. */
+ if (tree_int_cst_sgn (c) == -1)
+ break;
/* FALLTHROUGH */
case NEGATE_EXPR:
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7efd5b698d9..7b78678753e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-29 Matthias Klose <doko@ubuntu.com>
+
+ Backport from mainline:
+ 2007-11-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/34130
+ * gcc.c-torture/execute/pr34130.c: New testcase.
+
2007-11-16 Richard Guenther <rguenther@suse.de>
PR middle-end/34030
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr34130.c b/gcc/testsuite/gcc.c-torture/execute/pr34130.c
new file mode 100644
index 00000000000..b528ff22b8a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr34130.c
@@ -0,0 +1,12 @@
+extern void abort (void);
+int foo (int i)
+{
+ return -2 * __builtin_abs(i - 2);
+}
+int main()
+{
+ if (foo(1) != -2
+ || foo(3) != -2)
+ abort ();
+ return 0;
+}
diff --git a/svn-mergepoint b/svn-mergepoint
new file mode 100644
index 00000000000..c95b85b1d5c
--- /dev/null
+++ b/svn-mergepoint
@@ -0,0 +1 @@
+130757