[966f725] | 1 | Submitted By: Jim Gifford (patches at jg555 dot com) |
---|
| 2 | Date: 2006-04-17 |
---|
| 3 | Initial Package Version: 4.1.0 |
---|
| 4 | Origin: Maintainers |
---|
| 5 | Upstream Status: Fixed in SVN |
---|
| 6 | Description: |
---|
| 7 | Fixes an optimization error that can result incorrectly code. See PR's below |
---|
| 8 | |
---|
| 9 | Issues in CLFS book, this patch fixes the incorrect disk checksums in silo. |
---|
| 10 | |
---|
| 11 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27176 |
---|
| 12 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26763 |
---|
| 13 | |
---|
| 14 | diff -Naur gcc-4.1.0.orig/ChangeLog gcc-4.1.0/ChangeLog |
---|
| 15 | --- gcc-4.1.0.orig/ChangeLog 2006-02-28 08:30:33.000000000 +0000 |
---|
| 16 | +++ gcc-4.1.0/ChangeLog 2006-04-17 19:32:36.000000000 +0000 |
---|
| 17 | @@ -1,3 +1,12 @@ |
---|
| 18 | +2006-04-05 Richard Guenther <rguenther@suse.de> |
---|
| 19 | + |
---|
| 20 | + PR tree-optimization/26763 |
---|
| 21 | + * fold-const.c (fold_binary): Fold PTR + CST CMP PTR + CST |
---|
| 22 | + only for EQ_EXPR and NE_EXPR. |
---|
| 23 | + |
---|
| 24 | + * gcc.dg/torture/pr26763-1.c: New testcase. |
---|
| 25 | + * gcc.dg/torture/pr26763-2.c: Likewise. |
---|
| 26 | + |
---|
| 27 | 2006-02-28 Release Manager |
---|
| 28 | |
---|
| 29 | * GCC 4.1.0 released. |
---|
| 30 | diff -Naur gcc-4.1.0.orig/gcc/fold-const.c gcc-4.1.0/gcc/fold-const.c |
---|
| 31 | --- gcc-4.1.0.orig/gcc/fold-const.c 2006-02-03 18:02:04.000000000 +0000 |
---|
| 32 | +++ gcc-4.1.0/gcc/fold-const.c 2006-04-17 19:33:55.000000000 +0000 |
---|
| 33 | @@ -8897,8 +8897,9 @@ |
---|
| 34 | |
---|
| 35 | /* If this is a comparison of two exprs that look like an |
---|
| 36 | ARRAY_REF of the same object, then we can fold this to a |
---|
| 37 | - comparison of the two offsets. */ |
---|
| 38 | - if (TREE_CODE_CLASS (code) == tcc_comparison) |
---|
| 39 | + comparison of the two offsets. This is only safe for |
---|
| 40 | + EQ_EXPR and NE_EXPR because of overflow issues. */ |
---|
| 41 | + if (code == EQ_EXPR || code == NE_EXPR) |
---|
| 42 | { |
---|
| 43 | tree base0, offset0, base1, offset1; |
---|
| 44 | |
---|
| 45 | diff -Naur gcc-4.1.0.orig/gcc/testsuite/ChangeLog gcc-4.1.0/gcc/testsuite/ChangeLog |
---|
| 46 | --- gcc-4.1.0.orig/gcc/testsuite/ChangeLog 2006-02-28 08:27:59.000000000 +0000 |
---|
| 47 | +++ gcc-4.1.0/gcc/testsuite/ChangeLog 2006-04-17 19:35:18.000000000 +0000 |
---|
| 48 | @@ -1,3 +1,12 @@ |
---|
| 49 | +2006-04-05 Richard Guenther <rguenther@suse.de> |
---|
| 50 | + |
---|
| 51 | + PR tree-optimization/26763 |
---|
| 52 | + * fold-const.c (fold_binary): Fold PTR + CST CMP PTR + CST |
---|
| 53 | + only for EQ_EXPR and NE_EXPR. |
---|
| 54 | + |
---|
| 55 | + * gcc.dg/torture/pr26763-1.c: New testcase. |
---|
| 56 | + * gcc.dg/torture/pr26763-2.c: Likewise. |
---|
| 57 | + |
---|
| 58 | 2006-02-28 Release Manager |
---|
| 59 | |
---|
| 60 | * GCC 4.1.0 released. |
---|
| 61 | diff -Naur gcc-4.1.0.orig/gcc/testsuite/gcc.dg/pr26763-1.ch gcc-4.1.0/gcc/testsuite/gcc.dg/pr26763-1.ch |
---|
| 62 | --- gcc-4.1.0.orig/gcc/testsuite/gcc.dg/pr26763-1.ch 1970-01-01 00:00:00.000000000 +0000 |
---|
| 63 | +++ gcc-4.1.0/gcc/testsuite/gcc.dg/pr26763-1.ch 2006-04-17 19:36:55.000000000 +0000 |
---|
| 64 | @@ -0,0 +1,18 @@ |
---|
| 65 | +/* { dg-do run } */ |
---|
| 66 | + |
---|
| 67 | +extern void abort(void); |
---|
| 68 | + |
---|
| 69 | +int try (int *a) |
---|
| 70 | +{ |
---|
| 71 | + return a + -1 > a; |
---|
| 72 | +} |
---|
| 73 | + |
---|
| 74 | +int main(void) |
---|
| 75 | +{ |
---|
| 76 | + int bla[100]; |
---|
| 77 | + |
---|
| 78 | + if (try (bla + 50)) |
---|
| 79 | + abort (); |
---|
| 80 | + |
---|
| 81 | + return 0; |
---|
| 82 | +} |
---|
| 83 | diff -Naur gcc-4.1.0.orig/gcc/testsuite/gcc.dg/pr26763-2.c gcc-4.1.0/gcc/testsuite/gcc.dg/pr26763-2.c |
---|
| 84 | --- gcc-4.1.0.orig/gcc/testsuite/gcc.dg/pr26763-2.c 1970-01-01 00:00:00.000000000 +0000 |
---|
| 85 | +++ gcc-4.1.0/gcc/testsuite/gcc.dg/pr26763-2.c 2006-04-17 19:37:11.000000000 +0000 |
---|
| 86 | @@ -0,0 +1,18 @@ |
---|
| 87 | +/* { dg-do run } */ |
---|
| 88 | + |
---|
| 89 | +extern void abort(void); |
---|
| 90 | + |
---|
| 91 | +int try (char *a, int d) |
---|
| 92 | +{ |
---|
| 93 | + return a + d > a; |
---|
| 94 | +} |
---|
| 95 | + |
---|
| 96 | +int main(void) |
---|
| 97 | +{ |
---|
| 98 | + char bla[100]; |
---|
| 99 | + |
---|
| 100 | + if (try (bla + 50, -1)) |
---|
| 101 | + abort (); |
---|
| 102 | + |
---|
| 103 | + return 0; |
---|
| 104 | +} |
---|