aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-01-16 19:18:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-01-16 19:18:18 +0000
commit786ce82d44352369486d69add3cf3695b08998a2 (patch)
treec4997b22540cbef79a66ef53490b30491bd30b3d /gcc/java
parentc1cb09ada04abbf0087eafedaab7b3ec32b23659 (diff)
downloadgcc-786ce82d44352369486d69add3cf3695b08998a2.zip
gcc-786ce82d44352369486d69add3cf3695b08998a2.tar.gz
gcc-786ce82d44352369486d69add3cf3695b08998a2.tar.bz2
re PR tree-optimization/38835 (field-insensitive PTA causes libstdc++ miscompiles)
2009-01-16 Richard Guenther <rguenther@suse.de> PR tree-optimization/38835 PR middle-end/36227 * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT) and INT + PTR -> (INT)(PTR p+ INT) folding. * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR. java/ * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. * gcc.c-torture/execute/pr36227.c: New testcase. * gcc.dg/tree-ssa/foldaddr-1.c: XFAIL. * g++.dg/init/const7.C: Likewise. From-SVN: r143442
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/builtins.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index a177380..dd696e6 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-16 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/38835
+ PR middle-end/36227
+ * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR.
+
2008-12-05 Sebastian Pop <sebastian.pop@amd.com>
PR bootstrap/38262
diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c
index a760def..c46241b 100644
--- a/gcc/java/builtins.c
+++ b/gcc/java/builtins.c
@@ -265,9 +265,10 @@ static tree
build_addr_sum (tree type, tree addr, tree offset)
{
tree ptr_type = build_pointer_type (type);
- return fold_build2 (PLUS_EXPR,
- ptr_type,
- fold_convert (ptr_type, addr), offset);
+ return fold_build2 (POINTER_PLUS_EXPR,
+ ptr_type,
+ fold_convert (ptr_type, addr),
+ fold_convert (sizetype, offset));
}
/* Make sure that this-arg is non-NULL. This is a security check. */