Lines Matching refs:addr

100 	      rtx *addr, rtx **step_p, rtx **offset_p)
104 *addr = NULL_RTX;
121 *addr = act_elem;
126 if (*addr)
127 *addr = gen_rtx_PLUS (Pmode, *addr, base);
129 *addr = base;
143 if (*addr)
144 *addr = gen_rtx_PLUS (Pmode, *addr, act_elem);
146 *addr = act_elem;
150 if (*addr)
152 *addr = gen_rtx_PLUS (Pmode, *addr, offset);
154 *offset_p = &XEXP (*addr, 1);
158 *addr = offset;
160 *offset_p = addr;
164 if (!*addr)
165 *addr = const0_rtx;
174 addr_for_mem_ref (struct mem_address *addr, bool really_expand)
180 if (addr->step && !integer_onep (addr->step))
181 st = immed_double_const (TREE_INT_CST_LOW (addr->step),
182 TREE_INT_CST_HIGH (addr->step), Pmode);
186 if (addr->offset && !integer_zerop (addr->offset))
187 off = immed_double_const (TREE_INT_CST_LOW (addr->offset),
188 TREE_INT_CST_HIGH (addr->offset), Pmode);
215 templ = templates + TEMPL_IDX (addr->symbol, addr->base, addr->index,
226 sym = (addr->symbol
227 ? expand_expr (build_addr (addr->symbol, current_function_decl),
230 bse = (addr->base
231 ? expand_expr (addr->base, NULL_RTX, Pmode, EXPAND_NORMAL)
233 idx = (addr->index
234 ? expand_expr (addr->index, NULL_RTX, Pmode, EXPAND_NORMAL)
246 tree addr;
287 addr = fold_convert (type, addr_off);
289 addr = fold_build2 (PLUS_EXPR, type, addr_base, addr);
292 addr = addr_base;
294 addr = build_int_cst (type, 0);
296 return addr;
303 valid_mem_ref_p (enum machine_mode mode, struct mem_address *addr)
307 address = addr_for_mem_ref (addr, false);
319 create_mem_ref_raw (tree type, struct mem_address *addr)
321 if (!valid_mem_ref_p (TYPE_MODE (type), addr))
324 if (addr->step && integer_onep (addr->step))
325 addr->step = NULL_TREE;
327 if (addr->offset && zero_p (addr->offset))
328 addr->offset = NULL_TREE;
331 addr->symbol, addr->base, addr->index,
332 addr->step, addr->offset, NULL, NULL);
370 struct affine_tree_combination *addr)
375 for (i = 0; i < addr->n; i++)
377 if (addr->coefs[i] != 1)
380 val = addr->elts[i];
386 if (i == addr->n)
390 aff_combination_remove_elt (addr, i);
398 struct affine_tree_combination *addr)
403 for (i = 0; i < addr->n; i++)
405 if (addr->coefs[i] != 1)
408 val = addr->elts[i];
413 if (i == addr->n)
417 aff_combination_remove_elt (addr, i);
452 struct affine_tree_combination *addr)
459 for (i = 0; i < addr->n; i++)
461 if (addr->coefs[i] == 1
462 || !multiplier_allowed_in_address_p (addr->coefs[i]))
465 acost = multiply_by_cost (addr->coefs[i], Pmode);
470 best_mult = addr->coefs[i];
477 for (i = j = 0; i < addr->n; i++)
479 if (addr->coefs[i] != best_mult)
481 addr->coefs[j] = addr->coefs[i];
482 addr->elts[j] = addr->elts[i];
487 elt = fold_convert (sizetype, addr->elts[i]);
493 addr->n = j;
509 addr_to_parts (struct affine_tree_combination *addr, struct mem_address *parts)
519 if (addr->offset)
520 parts->offset = build_int_cst_type (sizetype, addr->offset);
525 move_fixed_address_to_symbol (parts, addr);
529 most_expensive_mult_to_index (parts, addr);
535 move_pointer_to_base (parts, addr);
538 for (i = 0; i < addr->n; i++)
540 part = fold_convert (sizetype, addr->elts[i]);
541 if (addr->coefs[i] != 1)
543 build_int_cst_type (sizetype, addr->coefs[i]));
546 if (addr->rest)
547 add_to_parts (parts, fold_convert (sizetype, addr->rest));
569 struct affine_tree_combination *addr)
575 addr_to_parts (addr, &parts);
683 get_address_description (tree op, struct mem_address *addr)
685 addr->symbol = TMR_SYMBOL (op);
686 addr->base = TMR_BASE (op);
687 addr->index = TMR_INDEX (op);
688 addr->step = TMR_STEP (op);
689 addr->offset = TMR_OFFSET (op);
710 struct mem_address addr;
714 get_address_description (ref, &addr);
716 if (addr.base && TREE_CODE (addr.base) == INTEGER_CST)
718 if (addr.offset)
719 addr.offset = fold_binary_to_constant (PLUS_EXPR, sizetype,
720 addr.offset,
721 fold_convert (sizetype, addr.base));
723 addr.offset = addr.base;
725 addr.base = NULL_TREE;
729 if (addr.index && TREE_CODE (addr.index) == INTEGER_CST)
731 off = addr.index;
732 if (addr.step)
735 off, addr.step);
736 addr.step = NULL_TREE;
739 if (addr.offset)
741 addr.offset = fold_binary_to_constant (PLUS_EXPR, sizetype,
742 addr.offset, off);
745 addr.offset = off;
747 addr.index = NULL_TREE;
754 ret = create_mem_ref_raw (TREE_TYPE (ref), &addr);