aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <andrew_pinski@playstation.sony.com>2007-08-09 21:39:08 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2007-08-09 14:39:08 -0700
commiteafaa67539cbcdf8d8ecbe8b907e719f66cade05 (patch)
treeaf0dfa5a41a062b04a6066ad983b5cdc444debda /gcc
parente057e0cd1d9141a4251756d1830cc0939494208c (diff)
downloadgcc-eafaa67539cbcdf8d8ecbe8b907e719f66cade05.zip
gcc-eafaa67539cbcdf8d8ecbe8b907e719f66cade05.tar.gz
gcc-eafaa67539cbcdf8d8ecbe8b907e719f66cade05.tar.bz2
re PR c/32796 (internal compiler error: tree check: expected integer_type or enumeral_type or boolean_type or real_type, have pointer_type in int_fits_type_p)
2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com> PR c/32796 * c-typeck.c (build_binary_op): Check for non pointer types before calling int_fits_type_p. 2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com> PR c/32796 * gcc.c-torture/compile/pr32796.c: New test. From-SVN: r127323
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-typeck.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr32796.c6
4 files changed, 23 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 410cf54..25fb6ff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
+ PR c/32796
+ * c-typeck.c (build_binary_op): Check for non pointer types before
+ calling int_fits_type_p.
+
+2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
PR middle-end/32813
* fold-const.c (omit_one_operand): Return only the ommitted expression
if the result is an empty statement.
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 3e209e2..6964e75 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -8226,8 +8226,9 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
< TYPE_PRECISION (result_type))
&& (type
= c_common_signed_or_unsigned_type (unsigned1,
- TREE_TYPE (arg1)),
- int_fits_type_p (arg0, type)))
+ TREE_TYPE (arg1)))
+ && !POINTER_TYPE_P (type)
+ && int_fits_type_p (arg0, type))
result_type = type;
else if (TREE_CODE (arg1) == INTEGER_CST
&& (unsigned0 || !uns)
@@ -8235,8 +8236,9 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
< TYPE_PRECISION (result_type))
&& (type
= c_common_signed_or_unsigned_type (unsigned0,
- TREE_TYPE (arg0)),
- int_fits_type_p (arg1, type)))
+ TREE_TYPE (arg0)))
+ && !POINTER_TYPE_P (type)
+ && int_fits_type_p (arg1, type))
result_type = type;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 06b2fff..2659bb2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
+ PR c/32796
+ * gcc.c-torture/compile/pr32796.c: New test.
+
+2007-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
PR middle-end/32813
* gfortran.fortran-torture/compile/emptyif-1.f90: New test.
* lib/fortran-torture.exp (fortran-torture): Use TORTURE_OPTIONS instead
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32796.c b/gcc/testsuite/gcc.c-torture/compile/pr32796.c
new file mode 100644
index 0000000..9e0abfb
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr32796.c
@@ -0,0 +1,6 @@
+
+
+__SIZE_TYPE__ f (void *ptr)
+{
+ return ((__SIZE_TYPE__)(ptr)-1) | 1ULL;
+}