From d1f1a283e496aabb3974d20bb4b9cd4a76f2d9fa Mon Sep 17 00:00:00 2001 From: Bin Cheng Date: Thu, 8 May 2014 09:00:42 +0000 Subject: tree-affine.c (tree_to_aff_combination): Handle MEM_REF for core part of address expressions. * tree-affine.c (tree_to_aff_combination): Handle MEM_REF for core part of address expressions. From-SVN: r210204 --- gcc/ChangeLog | 5 +++++ gcc/tree-affine.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 354cdb9..e01f485 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-05-08 Bin Cheng + + * tree-affine.c (tree_to_aff_combination): Handle MEM_REF for + core part of address expressions. + 2014-05-08 Alan Modra PR target/60737 diff --git a/gcc/tree-affine.c b/gcc/tree-affine.c index 1d292c4..0b85778 100644 --- a/gcc/tree-affine.c +++ b/gcc/tree-affine.c @@ -328,7 +328,14 @@ tree_to_aff_combination (tree expr, tree type, aff_tree *comb) if (bitpos % BITS_PER_UNIT != 0) break; aff_combination_const (comb, type, bitpos / BITS_PER_UNIT); - core = build_fold_addr_expr (core); + if (TREE_CODE (core) == MEM_REF) + { + aff_combination_add_cst (comb, wi::to_widest (TREE_OPERAND (core, 1))); + core = TREE_OPERAND (core, 0); + } + else + core = build_fold_addr_expr (core); + if (TREE_CODE (core) == ADDR_EXPR) aff_combination_add_elt (comb, core, 1); else -- cgit v1.1