Lines Matching refs:parts

369 move_fixed_address_to_symbol (struct mem_address *parts,
389 parts->symbol = TREE_OPERAND (val, 0);
397 move_pointer_to_base (struct mem_address *parts,
416 parts->base = val;
423 add_to_parts (struct mem_address *parts, tree elt)
427 if (!parts->index)
429 parts->index = elt;
433 if (!parts->base)
435 parts->base = elt;
440 type = TREE_TYPE (parts->base);
441 parts->base = fold_build2 (PLUS_EXPR, type,
442 parts->base,
451 most_expensive_mult_to_index (struct mem_address *parts,
495 parts->index = mult_elt;
496 parts->step = build_int_cst_type (sizetype, best_mult);
509 addr_to_parts (struct affine_tree_combination *addr, struct mem_address *parts)
514 parts->symbol = NULL_TREE;
515 parts->base = NULL_TREE;
516 parts->index = NULL_TREE;
517 parts->step = NULL_TREE;
520 parts->offset = build_int_cst_type (sizetype, addr->offset);
522 parts->offset = NULL_TREE;
525 move_fixed_address_to_symbol (parts, addr);
529 most_expensive_mult_to_index (parts, addr);
534 if (!parts->symbol)
535 move_pointer_to_base (parts, addr);
544 add_to_parts (parts, part);
547 add_to_parts (parts, fold_convert (sizetype, addr->rest));
553 gimplify_mem_ref_parts (block_stmt_iterator *bsi, struct mem_address *parts)
555 if (parts->base)
556 parts->base = force_gimple_operand_bsi (bsi, parts->base,
558 if (parts->index)
559 parts->index = force_gimple_operand_bsi (bsi, parts->index,
573 struct mem_address parts;
575 addr_to_parts (addr, &parts);
576 gimplify_mem_ref_parts (bsi, &parts);
577 mem_ref = create_mem_ref_raw (type, &parts);
583 if (parts.step && !integer_onep (parts.step))
586 gcc_assert (parts.index);
587 parts.index = force_gimple_operand_bsi (bsi,
589 parts.index, parts.step),
591 parts.step = NULL_TREE;
593 mem_ref = create_mem_ref_raw (type, &parts);
598 if (parts.symbol)
601 build_addr (parts.symbol, current_function_decl));
604 if (parts.base)
606 if (parts.index)
607 parts.base = force_gimple_operand_bsi (bsi,
609 fold_convert (addr_type, parts.base),
614 parts.index = parts.base;
615 parts.base = tmp;
619 parts.base = tmp;
620 parts.symbol = NULL_TREE;
622 mem_ref = create_mem_ref_raw (type, &parts);
627 if (parts.index)
630 if (parts.base)
632 atype = TREE_TYPE (parts.base);
633 parts.base = force_gimple_operand_bsi (bsi,
635 parts.base,
636 fold_convert (atype, parts.index)),
640 parts.base = parts.index;
641 parts.index = NULL_TREE;
643 mem_ref = create_mem_ref_raw (type, &parts);
648 if (parts.offset && !integer_zerop (parts.offset))
651 if (parts.base)
653 atype = TREE_TYPE (parts.base);
654 parts.base = force_gimple_operand_bsi (bsi,
656 parts.base,
657 fold_convert (atype, parts.offset)),
661 parts.base = parts.offset;
663 parts.offset = NULL_TREE;
665 mem_ref = create_mem_ref_raw (type, &parts);
673 gcc_assert (parts.symbol == NULL_TREE);
674 gcc_assert (parts.index == NULL_TREE);
675 gcc_assert (!parts.step || integer_onep (parts.step));
676 gcc_assert (!parts.offset || integer_zerop (parts.offset));
766 dump_mem_address (FILE *file, struct mem_address *parts)
768 if (parts->symbol)
771 print_generic_expr (file, parts->symbol, TDF_SLIM);
774 if (parts->base)
777 print_generic_expr (file, parts->base, TDF_SLIM);
780 if (parts->index)
783 print_generic_expr (file, parts->index, TDF_SLIM);
786 if (parts->step)
789 print_generic_expr (file, parts->step, TDF_SLIM);
792 if (parts->offset)
795 print_generic_expr (file, parts->offset, TDF_SLIM);