summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-address.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-16 19:18:18 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-16 19:18:18 +0000
commitcd6342bd1ce409168e6980a1573ed0eaf8f570e6 (patch)
treec4997b22540cbef79a66ef53490b30491bd30b3d /gcc/tree-ssa-address.c
parent298bbd8dca781f7973acbba05b81225b017d7c17 (diff)
downloadgcc-cd6342bd1ce409168e6980a1573ed0eaf8f570e6.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143442 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-address.c')
-rw-r--r--gcc/tree-ssa-address.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c
index df4f5c9296f..da236ffd5a9 100644
--- a/gcc/tree-ssa-address.c
+++ b/gcc/tree-ssa-address.c
@@ -619,9 +619,9 @@ create_mem_ref (gimple_stmt_iterator *gsi, tree type, aff_tree *addr,
{
atype = TREE_TYPE (tmp);
parts.base = force_gimple_operand_gsi (gsi,
- fold_build2 (PLUS_EXPR, atype,
- fold_convert (atype, parts.base),
- tmp),
+ fold_build2 (POINTER_PLUS_EXPR, atype,
+ tmp,
+ fold_convert (sizetype, parts.base)),
true, NULL_TREE, true, GSI_SAME_STMT);
}
else