Deleted Added
full compact
tree-ssa-address.c (260073) tree-ssa-address.c (260194)
1/* Memory address lowering and addressing mode selection.
2 Copyright (C) 2004 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it
7under the terms of the GNU General Public License as published by the
8Free Software Foundation; either version 2, or (at your option) any

--- 555 unchanged lines hidden (view full) ---

564 computations are emitted in front of BSI. TYPE is the mode
565 of created memory reference. */
566
567tree
568create_mem_ref (block_stmt_iterator *bsi, tree type,
569 struct affine_tree_combination *addr)
570{
571 tree mem_ref, tmp;
1/* Memory address lowering and addressing mode selection.
2 Copyright (C) 2004 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it
7under the terms of the GNU General Public License as published by the
8Free Software Foundation; either version 2, or (at your option) any

--- 555 unchanged lines hidden (view full) ---

564 computations are emitted in front of BSI. TYPE is the mode
565 of created memory reference. */
566
567tree
568create_mem_ref (block_stmt_iterator *bsi, tree type,
569 struct affine_tree_combination *addr)
570{
571 tree mem_ref, tmp;
572 tree atype;
572 tree addr_type = build_pointer_type (type), atype;
573 struct mem_address parts;
574
575 addr_to_parts (addr, &parts);
576 gimplify_mem_ref_parts (bsi, &parts);
577 mem_ref = create_mem_ref_raw (type, &parts);
578 if (mem_ref)
579 return mem_ref;
580

--- 11 unchanged lines hidden (view full) ---

592
593 mem_ref = create_mem_ref_raw (type, &parts);
594 if (mem_ref)
595 return mem_ref;
596 }
597
598 if (parts.symbol)
599 {
573 struct mem_address parts;
574
575 addr_to_parts (addr, &parts);
576 gimplify_mem_ref_parts (bsi, &parts);
577 mem_ref = create_mem_ref_raw (type, &parts);
578 if (mem_ref)
579 return mem_ref;
580

--- 11 unchanged lines hidden (view full) ---

592
593 mem_ref = create_mem_ref_raw (type, &parts);
594 if (mem_ref)
595 return mem_ref;
596 }
597
598 if (parts.symbol)
599 {
600 tmp = build_addr (parts.symbol, current_function_decl);
601 gcc_assert (is_gimple_val (tmp));
600 tmp = fold_convert (addr_type,
601 build_addr (parts.symbol, current_function_decl));
602
603 /* Add the symbol to base, eventually forcing it to register. */
604 if (parts.base)
605 {
602
603 /* Add the symbol to base, eventually forcing it to register. */
604 if (parts.base)
605 {
606 gcc_assert (TREE_TYPE (parts.base) == sizetype);
607
608 if (parts.index)
606 if (parts.index)
609 {
610 atype = TREE_TYPE (tmp);
611 parts.base = force_gimple_operand_bsi (bsi,
612 fold_build2 (PLUS_EXPR, atype,
613 fold_convert (atype, parts.base),
607 parts.base = force_gimple_operand_bsi (bsi,
608 fold_build2 (PLUS_EXPR, addr_type,
609 fold_convert (addr_type, parts.base),
614 tmp),
615 true, NULL_TREE);
610 tmp),
611 true, NULL_TREE);
616 }
617 else
618 {
619 parts.index = parts.base;
620 parts.base = tmp;
621 }
622 }
623 else
624 parts.base = tmp;

--- 181 unchanged lines hidden ---
612 else
613 {
614 parts.index = parts.base;
615 parts.base = tmp;
616 }
617 }
618 else
619 parts.base = tmp;

--- 181 unchanged lines hidden ---