aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-phiopt.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa-phiopt.c')
-rw-r--r--gcc/tree-ssa-phiopt.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index c64e8e2..52be150 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -1853,7 +1853,9 @@ hoist_adjacent_loads (basic_block bb0, basic_block bb1,
if (TREE_CODE (arg1) != SSA_NAME
|| TREE_CODE (arg2) != SSA_NAME
|| SSA_NAME_IS_DEFAULT_DEF (arg1)
- || SSA_NAME_IS_DEFAULT_DEF (arg2))
+ || SSA_NAME_IS_DEFAULT_DEF (arg2)
+ || !is_gimple_reg (arg1)
+ || !is_gimple_reg (arg2))
continue;
def1 = SSA_NAME_DEF_STMT (arg1);
@@ -1914,17 +1916,11 @@ hoist_adjacent_loads (basic_block bb0, basic_block bb1,
defswap = def1;
def1 = def2;
def2 = defswap;
- /* Don't swap bb1 and bb2 as we may have more than one
- phi to process successfully. */
- bb_for_def1 = bb2;
- bb_for_def2 = bb1;
- }
- else
- {
- bb_for_def1 = bb1;
- bb_for_def2 = bb2;
}
+ bb_for_def1 = gimple_bb (def1);
+ bb_for_def2 = gimple_bb (def2);
+
/* Check for proper alignment of the first field. */
tree_offset1 = bit_position (field1);
tree_offset2 = bit_position (field2);